在我的WPF应用程序中,我在ScrollViewer中有一个DataGrid。
只要鼠标悬停在滚动条上,鼠标滚轮就会导致ScrollViewer滚动。但是,一旦鼠标在包含的DataGrid上移动,鼠标滚轮停止会导致ScrollViewer滚动。
我原以为事件是自动传递到树上直到一个对象处理它们,但如果是这样的话,为什么ScrollViewer本身不处理PreviewMouseWheel事件呢?
<Grid Grid.Row="1">
<ScrollViewer VerticalScrollBarVisibility="Auto" Height="200">
<DataGrid SelectionMode="Single" IsReadOnly="True"
AlternationCount="2" AlternatingRowBackground="#FFC2CBFF"
ItemsSource="{Binding Source={StaticResource SearchResults}}" />
</ScrollViewer>
</Grid>
答案 0 :(得分:2)
我目前无法测试它,但我认为这会有所帮助。
private void Grid_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
e.Handled = false;
}
设置e.Handled = false
应该可以解决问题,因为它会将事件传递给FrameworkElement.Parent
。
最后,为什么不使用ScrollViewer
的{{1}}。为什么甚至包裹另一个。
DataGrid
我想你明白了!