博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【WPF】ListBox嵌套与事件冒泡
阅读量:6334 次
发布时间:2019-06-22

本文共 1027 字,大约阅读时间需要 3 分钟。

原文:

问题:两个ListBox嵌套后,当鼠标位于内部ListBox上,鼠标滚轮事件会被内部ListBox接收,导致外层ListBox不能用鼠标滚轮滑动!现在的需求是该事件要能给外部ListBox处理,即嵌套的ListBox应该由外层ListBox来接收鼠标滚轮事件。

思路:根据WPF的冒泡路由事件,鼠标滚轮事件首先会被内层的ListBox接收。此时该事件被拦截后直接将它标记为已处理(不让内部ListBox的滚轮滑动),然后再手动激发一个鼠标滚轮事件,该事件自动向上冒泡就能被外层ListBox接收到。

给内层ListBox注册一个鼠标滚轮事件。

后台代码处理该事件。

/// /// 问题:内层的ListBox拦截了鼠标滚轮事件,导致外层ListBox不能用鼠标滚轮滑动。/// 办法:内层ListBox拦截鼠标滚轮事件后,再手动激发一个鼠标滚轮事件,让事件冒泡给外层ListBox接收到。/// /// /// private void innerLB_PreviewMouseWheel(object sender, MouseWheelEventArgs e){    if (!e.Handled)    {        // 内层ListBox拦截鼠标滚轮事件        e.Handled = true;        // 激发一个鼠标滚轮事件,冒泡给外层ListBox接收到        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);    }}

 

参考:

转载地址:http://lksoa.baihongyu.com/

你可能感兴趣的文章
Thinkpad E450c进入BIOS
查看>>
nginx支持HTTP2的配置过程
查看>>
C. Day at the Beach
查看>>
技术学习网站
查看>>
js继承的方式
查看>>
【Splay】bzoj3224 Tyvj 1728 普通平衡树
查看>>
【dijkstra】【次短路】【fread】hdu6181 Two Paths
查看>>
python3支持excel读写
查看>>
工具:SVN的Web客户端(ViewVC、SVNWebClient、sventon)和任务管理(Trac、Collaboa)
查看>>
ubuntu关闭自动更新、打开 ubuntu 的 apport 崩溃检测报告功能
查看>>
vmlinux,zImage,bzImage,vmlinuz,uImage,关系
查看>>
会议管理拖动效果的页面制作1
查看>>
linux grep、find 命令详解
查看>>
Building third-party products of OpenCascade
查看>>
Python之路【第四篇】:Pycharm集成开发环境
查看>>
D2: deck of cards
查看>>
D0: design summary
查看>>
各种排序算法
查看>>
Vuex详解笔记2
查看>>
django url注册器组件, 响应器组件, 分页器组件
查看>>