Universal Windows 8.1 Store project here.

I want to know, when a ListView stops scrolling after user interaction. I found plenty of information on the net, but not one example reliably working on WP 8.1 (WPF/WP8 examples do not help much, and there are loads of them).

Here's what I do now.

1. The ListView
---------------

```
<ListView  
    x:Name="MessageList"
    ItemsSource="{Binding Messages}"  
    VerticalAlignment="Bottom"                
    ItemContainerStyle="{StaticResource ChatListViewItemStyle}" 
    PointerEntered="MessageList_OnPointerEntered"
    >
    <ListView.ItemTemplate>
        <DataTemplate>
            <messages:MessageContainer />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

```

2. The ScrollViewer
-------------------

I get a ScrollViewer reference from the ListView in code behind.

```
// GetChildElement<T>(this DependencyObject root) is a simple extension method of mine
Scroll = MessageList.GetChildElement<ScrollViewer>();

```

3. ListViewer.PointerEntered and ScrollViewer.ViewChanged
---------------------------------------------------------

`PointerEntered` handler is used to detect the start of user interaction. When an interaction is detected, I subscribe to `Scroll.ViewChanged` and use `IsIntermediate` flag of the event to detect when the list stops scrolling (including inertia).

```
void MessageList_OnPointerEntered(object sender, PointerRoutedEventArgs e)
{
    Debug.WriteLine("START MONITORING INTERACTION");
    Scroll.ViewChanged += OnViewChangedByUser;
}

void OnViewChangedByUser(object sender, ScrollViewerViewChangedEventArgs e)
{
  Debug.WriteLine("WAITING FOR INTERACTION TO END");
  if (!e.IsIntermediate) {
    Debug.WriteLine("INTERACTION ENDED");
    Scroll.ViewChanged -= OnViewChangedByUser;
  }
}

```

This does work to some extent.

The problem
-----------

The problem is, `ViewChanged` is not fired when the list is scrolled to the end/start and the user pulls it out of bounds and releases it, causing it to return back with inertia. So, the interaction start is detected, but the end is not. `ViewChanged` is not fired at all -- neither with `IsIntermediate`=True, nor with False.

[![ViewChanged event is not fired at all](https://i.stack.imgur.com/D93JT.gif)](https://i.stack.imgur.com/D93JT.gif)

What is a better way of doing what I want?