谷歌搜索了很多之后,最后我要问你们。
我创建了scrollviewer ,其中包含items( listboxItems )和从webservices获取的这些项目。 但一次只能提取5个项目。 因此最初将是5个项目,然后是下5个(追加到scrollviewer ),然后是下5个,依此类推...

注意:这里的listBoxitems用于scrollviewer而不是listbox

webservice 获取的数据 还包含 --->

total items
numResults (current number of items fetched) 

现在假设我获取数据的方法是->

getData(int nextResult)
{
      // some code to fetch the data
}

其中nextResult是下一个商品编号(例如:如果第二次请求,nextResult为6)

但是我无法编写代码来检测用户将scrollviewer滚动到末尾,然后再调用或触发一个方法,无论怎么说!

我一直对scrollviewer的VerticalOffsetExtentHeightViewportHeightScrollableHeight等感到困惑,即将使用它们并计算所需的信息以实现上述要求。

因此,如果有人知道相同或曾经使用过的scrollviwer,那么请发布答案。

===============>>#1 票数:1 已采纳

我通过使用适当的事件注册新的DependencyProperty ListVerticalOffset来实现的:

    // Constructor
    public MainPage()
    {
        InitializeComponent();

        ListVerticalOffsetProperty = DependencyProperty.Register("ListVerticalOffset", typeof(double), typeof(MainPage), new PropertyMetadata(OnListVerticalOffsetChanged));

        YourScrollViewer.Loaded += YourScrollViewer_Loaded;
    }

    void YourScrollViewer_Loaded(object sender, RoutedEventArgs e)
    {
        var binding = new Binding
            {
                Source = YourScrollViewer,
                Path = new PropertyPath("VerticalOffset"),
                Mode = BindingMode.OneWay
            };
        SetBinding(ListVerticalOffsetProperty, binding);
    }

    private void OnListVerticalOffsetChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
    {
        var atBottom = YourScrollViewer.VerticalOffset >= YourScrollViewer.ScrollableHeight;
        if (atBottom) MessageBox.Show("End");
    }

    public readonly DependencyProperty ListVerticalOffsetProperty;

    public double ListVerticalOffset
    {
        get { return (double)GetValue(ListVerticalOffsetProperty); }
        set { SetValue(ListVerticalOffsetProperty, value); }
    }

可能是这种解决方案,或者它的实现不是最佳的,但是它对我有用。

  ask by Ashok Damani translate from so

未解决问题?本站智能推荐: