代码之家  ›  专栏  ›  技术社区  ›  Benjamin Chambers

PreviewMouseWheel事件未传递给封闭的ScrollViewer

  •  0
  • Benjamin Chambers  · 技术社区  · 7 年前

    只要鼠标悬停在滚动条上,鼠标滚轮就会正确地使ScrollViewer滚动。但是,一旦鼠标移动到包含的数据网格上,鼠标滚轮就会停止,从而导致ScrollViewer滚动。

        <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>
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Peter    7 年前

    我目前没有可能测试它,但我认为这会有所帮助。

        private void Grid_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
        {
    
            e.Handled = false;
        }
    

    设置 e.Handled = false 应该这样做,因为它会将事件传递给 FrameworkElement.Parent

    ScrollViewer 你的 DataGrid .为什么还要再绕一圈呢。

    <DataGrid ScrollViewer.VerticalScrollBarVisibility="Auto" />
    

    我想你明白了!