WPF教程

WPF捕获事件即使这个事件被标记为Handled--WPF教程

时间:2013/7/23 22:22:42  作者:WPF之家  来源:http://www.wpf123.com  查看:110  评论:0
内容摘要: foreach (UIElement uiEle in LayoutRoot.Children){ uiEle.MouseMove += new MouseEventHandler(Element_MouseMove); uiEle.MouseLeftButt...

 

foreach (UIElement uiEle in LayoutRoot.Children){   uiEle.MouseMove += new MouseEventHandler(Element_MouseMove);   uiEle.MouseLeftButtonDown += new MouseButtonEventHandler(Element_MouseLeftButtonDown);   uiEle.MouseLeftButtonUp += new MouseButtonEventHandler(Element_MouseLeftButtonUp);                }

有人说更改Button控件的ClickedMode=Hover,DebugLZQ试了下问题多多,瞎扯淡。


类似的问题还有,如我想实现拖动TextBox控件的时候也不行,MouseLeftButtonDown事件依然无法触发。


用的更多的场景是,我程序中有一个第三方控件,我需要捕获这个控件的某个路由事件,但是这个事件在该第三方控件的事件处理中被标记为Handled=true,我们可以怎么来做?


下面是解决问题的代码片段:



if (uiEle is Button || uiEle is TextBox){   uiEle.AddHandler(Button.MouseLeftButtonDownEvent, new MouseButtonEventHandler(Element_MouseLeftButtonDown), true);}

这个代码的关键点是最后那个true,它告诉wpf引擎call这个handle,即使它被标记为Handled=true。
由此可见,WPF路由事件被标记为handled以后,并不是不在visual tree上传递了;而是,不去call这个handler了。


标签:捕获 事件 即使 标记 wpf 

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。本文出自“wpf之家”,请务必保留此出处:http://www.wpf123.com

相关评论
Copyright © 2009-2014 WPF之家(http://www.wpf123.com/) All rights reserved
 Powered by WPF之家
闽ICP备10004896号