0

I've seen a lot of questions that ask how to set a scroll position, however I don't need to set the position, I need to get it. For the Windows Universal application I'm writing I need to check if the user scrolled all the way up. If the user has scrolled all the way up I need to make a request to my server to get more data to show to the user.

How do I see the scroll position of a listbox in code? Is there some kind of value changed event or something that I can use?

WereWolfBoy
  • 498
  • 1
  • 4
  • 23

2 Answers2

1

You can find the ScrollViewer element in visual tree. Then subscribes ViewChanged event for observing its offset changed.

Try this code:

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);
}
Eddie
  • 661
  • 1
  • 5
  • 13
0

for such use ListView and Collection with Incremental Loading / http://code.msdn.microsoft.com/windowsapps/Data-Binding-7b1d67b5

IceFog
  • 310
  • 2
  • 4