本文最后更新于:2022年10月18日 下午
当使用类似
| <ScrollViewer> <ListBox/> </ScrollViewer>
|
的结构时,会出现鼠标无法在内部滚动整个容器的情况,原因是内部组件拦截了滚轮事件。
经搜集资料,大佬的解决方案如下:
绑定PreviewMouseWheel事件
| <ListBox PreviewMouseWheel="HandlePreviewMouseWheel">
|
后台代码拦截滚轮事件:
| 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); } }
|
亲测有效,ListView/ListView/DataGrid 均可使用此方法。
来源:https://stackoverflow.com/questions/1585462/bubbling-scroll-events-from-a-listview-to-its-parent