在我的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,他在几个月前为我解决了这个问题。