fire(call)方法,当scrollviewer滚动到它的结尾时
谷歌搜索了很多,最后我会问你们这些。
我创建了scrollviewer
,它包含从webservices
获取的项目( listboxItems
)和这些项目。 但是一次只能拿出5件物品。 所以最初它将是5个项目,然后是5个项目(附加到scrollviewer
)然后接下来5个等等……
注意: – 在listBoxitems
中使用scrollviewer
,而不是列表框
从 webservice
获取的数据 也包含 —>
total items numResults (current number of items fetched)
现在假设我的获取数据的方法是—>
getData(int nextResult) { // some code to fetch the data }
其中nextResult是下一个项目编号(例如: – nextResult是6,如果请求第二次)
但我无法编写代码来检测用户滚动滚动查看器到最后然后调用或触发的方法,无论如何说!
我在scrollviewer的VerticalOffset
, ExtentHeight
, ViewportHeight
, ScrollableHeight
等中非常困惑,即将使用它们并计算所需信息以达到上述要求。
因此,如果有人知道相同或使用过的卷轴,请发布回答。
我通过使用适当的事件注册新的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); } }
可能是这个解决方案,或者它的实现不是最优的,但它对我有用。