列表框滚动条获取位置

本文关键字:位置 获取 滚动条 列表 | 更新日期: 2023-09-27 18:17:30

我见过很多问题,问如何设置滚动位置,但我不需要设置位置,我需要得到它。对于我正在编写的Windows Universal应用程序,我需要检查用户是否一直向上滚动。如果用户一直向上滚动,我需要向服务器发出请求,以获取更多数据以显示给用户。

如何在代码中看到列表框的滚动位置?是否存在某种价值改变事件或我可以使用的东西?

列表框滚动条获取位置

您可以在可视化树中找到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);
}

使用增量加载的ListView和Collection/http://code.msdn.microsoft.com/windowsapps/Data-Binding-7b1d67b5