В зависимости от вашей конкретной ситуации существуют разные подходы, но я нашел, что это работает хорошо. Если предположить, что основные положения заключается в следующем:
<Window Height="200" Width="200">
<Grid>
<ScrollViewer Name="sViewer">
<StackPanel>
<Label Content="Scroll works here" Margin="10" />
<ListView Name="listTest" Margin="10"
PreviewMouseWheel="listTest_PreviewMouseWheel"
ScrollViewer.VerticalScrollBarVisibility="Disabled">
<ListView.ItemsSource>
<Int32Collection>
1,2,3,4,5,6,7,8,9,10
</Int32Collection>
</ListView.ItemsSource>
<ListView.View>
<GridView>
<GridViewColumn Header="Column 1" />
</GridView>
</ListView.View>
</ListView>
</StackPanel>
</ScrollViewer>
</Grid>
</Window>
Поднятие MouseWheelEvent себя во время PreviewMouseWheel кажется, чтобы заставить ScrollViewer работать. Хотелось бы, чтобы я знал, почему это кажется очень противоречивым.
private void listTest_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
e.Handled = true;
MouseWheelEventArgs e2 = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
e2.RoutedEvent = UIElement.MouseWheelEvent;
listTest.RaiseEvent(e2);
}
Я не могу за это признаться: http://stackoverflow.com/questions/3498686/wpf-remove-scrollviewer-from-treeview –
Это работало для моего UserControl с ListView в Это! : D – QuantumHive