列表框滚动条获取位置

时间:2014-08-11 09:50:35

标签: c# listbox scroll windows-phone-8.1 win-universal-app

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

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

2 个答案:

答案 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