Kółko myszy ScrollViewer nie działa

Obecnie pracuję nad moim pierwszym projektem WPF i próbuję przewijać listę. Na początku myślałem, że można to łatwo zrobić, ograniczając szerokość i wysokość listview, a tym samym wymuszając automatyczne wyświetlanie paska przewijania, gdy zawartość przekracza jego przestrzeń. Na początku wydawało się to w porządku, ale z powodu obsługiwanego zdarzenia PreviewMouseDown (które umożliwia przeciąganie elementów listy) nie działa po wybraniu elementu.

Drugie podejście (używając ScrollViewer)

<ScrollViewer>
    <ListView ItemsSource="{Binding FileViewModels}"
              PreviewMouseDown="ListView_MouseMove"
              Height="450" Width="200"/>
</ScrollViewer>

Oczywiście spowodowało to powstanie drugiego paska przewijania, gdy zawartość listy stała się większa niż jej maksymalna wysokość. A przeciągnięcie paska nadal nie działało po wybraniu elementu.

Trzeci (dość głupi)próba (wyłączenie duplikatu paska przewijania)

<ScrollViewer>
    <ListView ItemsSource="{Binding FileViewModels}"
              PreviewMouseDown="ListView_MouseMove"
              Height="450" Width="200"
              ScrollViewer.VerticalScrollBarVisibility="Disabled"
              ScrollViewer.HorizontalScrollBarVisibility="Disabled"/>
</ScrollViewer>

Usunięto duplikat paska przewijania i włączono przewijanie za pomocą kółka myszy, ale wyłączono pasek przewijania, dzięki czemu nie można było poruszać się, klikając i przeciągając.

Czwarta próba (stały rozmiar ScrollViewer)

<ScrollViewer Height="450" Width="200">
    <ListView ItemsSource="{Binding FileViewModels}"
              PreviewMouseDown="ListView_MouseMove"/>
</ScrollViewer>

Usunięto ograniczenie szerokości / wysokości z ListView i przeniesiono je do ScrollViewer. Włącza to pasek przewijania i usuwa duplikat. Niestety kółko myszy już nie działa (przeciąganie paska przewijania działa dobrze).

Czy ktoś mógłby mi wyjaśnić, dlaczego kółko myszy już nie działa i jak to naprawić?

Edytować Może powinienem wrócić do mojego pierwszego rozwiązania. Oczywiście szablon ListView zawiera już ScrollViewer. Pozostały problem polegałby na tym, że nie mogę przeciągnąć paska przewijania po wybraniu elementu ze względu na obsługiwane zdarzenie PreviewMouseDown (przewijanie za pomocą kółka myszy nadal działa w tym przypadku). Czy powinienem potraktować przeciąganie elementów inaczej (działało dobrze dla mnie, zanim chciałbym dodać pasek przewijania)? Czy istnieje sposób na wykrycie, czy kursor znajduje się nad paskiem przewijania (więc mógłbym odznaczyć element, który umożliwia przewijanie)? Czy są jakieś inne sugestie?

questionAnswers(5)

yourAnswerToTheQuestion