Attaching Command to ScrollViewer.ScrollChanged of ListView

4.9k Views Asked by At

The WPF ListView class can be set up to automatically handle scrolling without an external ScrollViewer and it's possible to register an event handler for the control's internal scrollbar by writing XAML like such:

<ListView ScrollViewer.ScrollChanged="ScrollChanged"  />

How to attach it to MVVM light Command? I tried the following, but it doesn't work:

<ListView>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="ScrollViewer.ScrollChangedEvent">
            <cmd:EventToCommand Command="{Binding ScrollCommand}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</ListView>

Note: ScrollCommand - is a RelayCommand from my viewmodel.

2

There are 2 best solutions below

1
On BEST ANSWER

EventTrigger doesn't trigger for routed events. You can use the solution proposed in this article to create a RoutedEventTrigger class and use it instead of EventTrigger.

1
On

I recommend a Behavior for this. If you don't have Blend, you'll need to get the Blend SDK. But once you have that, you can follow this tutorial to extend the behavior of the ScrollViewer.