在我的WPF应用程序中,我有一个ListView,其ScrollViewer.VerticalScrollBarVisibility设置为Disabled。它包含在ScrollViewer中。当我尝试在ListView上使用鼠标滚轮时,外部ScrollViewer不会滚动,因为ListView正在捕获滚动事件。

如何强制ListView允许滚动事件冒泡到ScrollViewer

最佳答案

您需要在内部listview中捕获预览鼠标滚轮事件

MyListView.PreviewMouseWheel += HandlePreviewMouseWheel;
或在XAML中
<ListView ... PreviewMouseWheel="HandlePreviewMouseWheel">
然后停止滚动列表 View 的事件并在父列表 View 中引发事件。
private void HandlePreviewMouseWheel(object sender, MouseWheelEventArgs e) {
    if (!e.Handled) {
        e.Handled = true;
        var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
        eventArg.RoutedEvent = UIElement.MouseWheelEvent;
        eventArg.Source = sender;
        var parent = ((Control)sender).Parent as UIElement;
        parent.RaiseEvent(eventArg);
    }
}
Creds去了@ robert-wagner,他在几个月前为我解决了这个问题。

10-05 20:49
查看更多