scrollviewer
,其中包含项目(listboxItems
)以及从webservices
获取的这些项目。但是一下子只能拿出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,如果请求第二次)
但是我无法编写代码来检测用户是否将滚动查看器滚动到结尾&然后是一个被调用或解雇的方法,不管怎么说!
我在滚动浏览器VerticalOffset
,ExtentHeight
,ViewportHeight
,ScrollableHeight
等方面感到非常困惑,即将使用它们&计算所需信息以达到上述要求。
所以,如果有人知道相同或曾经使用过的卷轴,请发布回答。
答案 0 :(得分: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); }
}
可能是这个解决方案,或者它的实现并不是最优的,但它对我有用。