将滚动事件从 ListView 冒泡到其父级 [英] Bubbling scroll events from a ListView to its parent

查看:39
本文介绍了将滚动事件从 ListView 冒泡到其父级的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

解决方案

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

MyListView.PreviewMouseWheel += HandlePreviewMouseWheel;

或者在 XAML 中

然后停止滚动列表视图的事件并在父列表视图中引发事件.

private void HandlePreviewMouseWheel(object sender, MouseWheelEventArgs e) {如果(!e.处理){e.handled = true;var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);eventArg.RoutedEvent = UIElement.MouseWheelEvent;eventArg.Source = 发件人;var parent = ((Control)sender).Parent 作为 UIElement;parent.RaiseEvent(eventArg);}}

信誉转给@robert-wagner,他在几个月前为我解决了这个问题.

In my WPF application I have a ListView whose ScrollViewer.VerticalScrollBarVisibility is set to Disabled. It is contained within a ScrollViewer. When I attempt to use the mouse wheel over the ListView, the outer ScrollViewer does not scroll because the ListView is capturing the scroll events.

How can I force the ListView to allow the scroll events to bubble up to the ScrollViewer?

解决方案

You need to capture the preview mouse wheel event in the inner listview

MyListView.PreviewMouseWheel += HandlePreviewMouseWheel;

Or in the XAML

<ListView ... PreviewMouseWheel="HandlePreviewMouseWheel">

then stop the event from scrolling the listview and raise the event in the parent listview.

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 go to @robert-wagner who solved this for me a few months ago.

这篇关于将滚动事件从 ListView 冒泡到其父级的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆