Detect when WPF listview scrollbar is at the bottom?

c#, listview, scroll, wpf

Solution

I figured it out. It seems I should have been getting events from the ScrollBar (`<ListView ScrollBar.Scroll="currentTagNotContactsList_Scroll"` in XAML) itself, rather than the viewer. This works, but I just have to figure a way to avoid the event handler being called repeatedly once the scrollbar is down. Maybe a timer would be good:

private void currentTagNotContactsList_Scroll(object sender, ScrollEventArgs e) {

    ScrollBar sb = e.OriginalSource as ScrollBar;

    if (sb.Orientation == Orientation.Horizontal)
        return;

    if (sb.Value == sb.Maximum) {
        Debug.Print("At the bottom of the list!");

    }

}

Problem

Is there a way to detect if the scrollbar from the `ScrollViewer` in a `ListView` has reached the bottom of the virtual scroll space? I would like to detect this to fetch more items from the server to put into the bound `ObservableCollection` on the `ListView`. Right now I'm doing this: ``` private void currentTagNotContactsList_scrollChanged(object sender, ScrollChangedEventArgs e) { ListView v = (ListView)sender; if (e.VerticalOffset + e.ViewportHeight == e.ExtentHeight) { Debug.Print("At the bottom of the list!"); } } ``` Is this even correct? I also need to differentiate between the vertical scrollbar causing the event and the horizontal scrollbar causing it (i.e. I don't want to keep generating calls to the server if you scroll horizontally at the bottom of the box). Thanks.

Original source