【发布时间】:2012-09-27 10:40:44
【问题描述】:
希望是一个简单的问题,因为我刚刚开始处理路由事件。
我有一个自定义的UserControl。这包含许多其他控件。
在我的树的更远处,我想响应源自其中一个包含控件(不是我的UserControl)的双击事件。但是,我的UserControl 显然正在捕捉事件并将source 属性设置为自身。我怎样才能阻止它这样做?
我不能使用OriginalSource,因为它指向点击的最低级别的控件(Border 或其他)。
例如。
MyWindow <--- Want to handle double click here with Source = MyContainedControl1
|
+-MyUserControl (this is setting Source to itself. How do I turn this off?)
|
+-MyContainedControl1
|
Border <---- Mouse double clicks here
EditBox
Etc
我尝试在MyUserControl 中覆盖OnMouseDoubleClick() 和OnPreviewMouseDoubleClick(),但此时事件已经将Source 设置为MyUserControl,甚至在调用base 或其他任何东西之前。
非常感谢
【问题讨论】:
-
也许您可以编写一个自定义事件,当引发下部元素中的双击事件时,该事件由 MyContainedControl 引发。然后在您的 MyWindow 中,自定义元素的 OriginalSource 应该是 MyContainedControl1。
-
向 MyUserControl 添加一个将 EventHandler 作为输入的方法。然后让该方法向 MyContainedControl1-X 注册处理程序。
标签: c# wpf user-controls event-handling routed-events