我看过很多问题,询问如何设置滚动位置,但是我不需要设置位置,我需要得到它。对于我正在编写的Windows Universal应用程序,我需要检查用户是否一直向上滚动。如果用户已经完全滚动,我需要向我的服务器发出请求以获取更多数据以显示给用户。
如何在代码中查看列表框的滚动位置?是否有某种价值变化的事件或我可以使用的东西?
答案 0 :(得分:1)
您可以在可视树中找到ScrollViewer
元素。然后订阅ViewChanged
事件以观察其偏移量的变化。
试试这段代码:
var border = VisualTreeHelper.GetChild(listView, 0) as Border;
if (border != null)
{
var scrollviewer = border.Child as ScrollViewer;
if (scrollviewer != null)
{
scrollviewer.ViewChanged += Scrollviewer_ViewChanged;
scrollviewer.ViewChanging += ScrollviewerOnViewChanging;
}
}
private void ScrollviewerOnViewChanging(object sender, ScrollViewerViewChangingEventArgs scrollViewerViewChangingEventArgs)
{
Debug.WriteLine("changing:{0}", ((ScrollViewer)sender).VerticalOffset);
}
void Scrollviewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
Debug.WriteLine("ViewChanged:{0}", ((ScrollViewer)sender).VerticalOffset);
}
答案 1 :(得分:0)
用于此类使用ListView和Collection with Incremental Loading / http://code.msdn.microsoft.com/windowsapps/Data-Binding-7b1d67b5