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

本文共 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://hwykl.baihongyu.com/

你可能感兴趣的文章
Spring IOC整理
查看>>
MyBatis学习总结_18_MyBatis与Hibernate区别
查看>>
CKEditor 案例
查看>>
MATLAB(5)——生成归一化直方图
查看>>
Python函数式实现单例特性
查看>>
Linux内存管理(转)
查看>>
查询上周的数据
查看>>
SpringBoot------个性化启动Banner设置
查看>>
【C014】Python数据类型 - 数值类型
查看>>
PHP 字符串正则替换函数preg_replace使用说明
查看>>
8个常用的Android开发工具
查看>>
C++语言基础(5)-this和static关键字
查看>>
同一个数据库实例,不同用户下多表创建视图,Hibernate完毕ORM映射,Spring整合,后台实现...
查看>>
Node.js nvshens图片批量下载爬虫1.01
查看>>
tail -f 和 -F 的用法
查看>>
『参考』.net CF组件编程(2)——为组件添加事件
查看>>
java正则匹配的一个简单例子
查看>>
JRuby 1.7.0 发布,默认使用 Ruby 1.9 模式
查看>>
hdu 2686(状压dp)
查看>>
phpmailer使用gmail SMTP的方法
查看>>