事件已处理2级以上
本文关键字:2级 处理 事件 | 更新日期: 2023-09-27 18:26:19
在WPF应用程序(C#)中,我在类ClassA中有一个ObjectX的实例。此ClassA在ClassB中实例化。
因此ClassB->包含->ClassA>的实例,该实例包含->ObjectX的实例
ObjectX引发EventA。我需要在ClassB中处理此事件。
这个概念叫什么(事件委派、事件路由…)?如何做到这一点?
在WPF中,它被称为路由事件,但只有当这两个都为真时,这才会起作用:
- 我们谈论的是元素类,"contains"表示您的一个控件实际上包含另一个控件[并且
LogicalTreeHelper
表示您的控件是彼此的父母/子女 - 如果您要查找的事件被定义为具有正确路由策略的路由,则
tunelled
或bubbling
将起作用。如果不是,那么路由事件对您没有帮助
我有一种感觉,你只需要这样的东西:
在B类中:
this.instanceOfA.InstanceOfX.MyEvent += MyHandlerInClassB;
但这与WPF无关。
UPD:或者类似的东西,如果你不想让instanceOfX可访问:
- 在
classA
上定义相同的事件,并在instanceOfX
引发其事件时引发该事件 - 在
ClassB
中处理instanceOfA.MyEvent
在这种情况下,您可以将instanceOfX
保持为私有,但您必须在在中间再添加一个事件。
WPF具有路由事件:
在元素树中的多个侦听器上调用处理程序,而不是仅针对引发事件的对象。
http://msdn.microsoft.com/en-us/library/ms742806.aspx