Колесо мыши ScrollViewer не работает

В настоящее время я работаю над своим первым проектом WPF и пытаюсь сделать просмотр списка прокручиваемым. Сначала я подумал, что это можно легко сделать, просто ограничив ширину и высоту списка и, таким образом, заставляя полосу прокрутки автоматически появляться всякий раз, когда содержимое превышает его пространство. Сначала это казалось нормальным, но из-за обработанного PreviewMouseDown-Event (которое позволяет перетаскивать элементы списка) он не работает после выбора элемента.

Вторая попытка (используя ScrollViewer)

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

Конечно, это приводило к появлению второй полосы прокрутки всякий раз, когда содержимое списка становилось больше его максимальной высоты. И перетаскивание панели все еще не работало после выбора элемента.

Третий (довольно глупо)попытка (отключение дублирования полосы прокрутки)

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

Это удалило дубликат полосы прокрутки и включило прокрутку с помощью колеса мыши, но отключило полосу прокрутки, поэтому вы не могли двигаться, щелкая и перетаскивая ее.

Четвертая попытка (постоянный размер ScrollViewer)

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

Убрал ограничение ширины / высоты из ListView и переместил его в ScrollViewer. Это включает полосу прокрутки и удаляет дубликаты. К сожалению, колесо мыши больше не работает (перетаскивание полосы прокрутки работает нормально).

Может кто-нибудь объяснить мне, почему колесо мыши больше не работает и как это исправить?

редактировать Может быть, я должен вернуться к своему первому решению. Очевидно, что шаблон ListView уже содержит ScrollViewer. Тогда осталась бы проблема, заключающаяся в том, что я не могу перетащить полосу прокрутки после выбора элемента из-за обработанного события PreviewMouseDown (в этом случае прокрутка с помощью колесика мыши все еще работает). Должен ли я справиться с перетаскиванием элементов по-разному (у меня все работало нормально, прежде чем я захотел добавить полосу прокрутки)? Или есть способ определить, находится ли курсор над полосой прокрутки (чтобы я мог отменить выбор элемента, который включает прокрутку)? Или есть другие предложения?

Ответы на вопрос(5)

Ваш ответ на вопрос