Roda do mouse ScrollViewer não está funcionando

Atualmente estou trabalhando no meu primeiro projeto WPF e tentando fazer uma lista de rolagem. No começo eu pensei que isso poderia ser feito facilmente simplesmente limitando a largura e a altura do listview e, assim, forçando uma barra de rolagem a aparecer automaticamente sempre que o conteúdo excedesse seu espaço. Isso pareceu bem no começo, mas devido ao evento manipulado PreviewMouseDown (que permite arrastar os itens da lista), ele não funciona depois de selecionar um item.

Segunda tentativa (usando ScrollViewer)

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

Naturalmente, isso resultou em uma segunda barra de rolagem sempre que o conteúdo da lista ficou maior que sua altura máxima. E arrastar a barra ainda não funcionou depois de selecionar um item.

Terceiro (muito tolo)tentativa (desabilitando a barra de rolagem duplicada)

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

Isso removeu a duplicata da barra de rolagem e ativou a rolagem por meio da roda do mouse, mas desativou a barra de rolagem, para que você não pudesse se mover clicando e arrastando-a.

Quarta tentativa (tamanho constante do ScrollViewer)

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

Removida a restrição width / height do ListView e movida para o ScrollViewer. Isso habilita a barra de rolagem e remove a duplicata. Infelizmente a roda do mouse não funciona mais (arrastar a barra de rolagem funciona bem).

Alguém poderia me explicar por que a roda do mouse não funciona mais e como consertar isso?

Editar Talvez eu deva voltar para a minha primeira solução. Obviamente, o modelo do ListView já contém um ScrollViewer. O problema restante seria que eu não posso arrastar a barra de rolagem depois de selecionar um item por causa do evento manipulado PreviewMouseDown (a rolagem por meio da roda do mouse ainda funciona nesse caso). Devo lidar com o arrastamento de itens de forma diferente (funcionou bem para mim, antes de querer adicionar uma barra de rolagem)? Ou existe uma maneira de detectar se o cursor está acima da barra de rolagem (então eu poderia desmarcar o item que habilita a rolagem)? Ou existem outras sugestões?

questionAnswers(5)

yourAnswerToTheQuestion