事件已处理2级以上

本文关键字:2级 处理 事件 | 更新日期: 2023-09-27 18:26:19

在WPF应用程序(C#)中,我在类ClassA中有一个ObjectX的实例。此ClassAClassB中实例化。

因此ClassB->包含->ClassA>的实例,该实例包含->ObjectX的实例

ObjectX引发EventA。我需要在ClassB中处理此事件。

这个概念叫什么(事件委派、事件路由…)?如何做到这一点?

事件已处理2级以上

在WPF中,它被称为路由事件,但只有当这两个都为真时,这才会起作用:

  1. 我们谈论的是元素类,"contains"表示您的一个控件实际上包含另一个控件[并且LogicalTreeHelper表示您的控件是彼此的父母/子女
  2. 如果您要查找的事件被定义为具有正确路由策略的路由,则tunelledbubbling将起作用。如果不是,那么路由事件对您没有帮助

我有一种感觉,你只需要这样的东西:

在B类中:

this.instanceOfA.InstanceOfX.MyEvent += MyHandlerInClassB;

但这与WPF无关。


UPD:或者类似的东西,如果你不想让instanceOfX可访问:

  1. classA上定义相同的事件,并在instanceOfX引发其事件时引发该事件
  2. ClassB中处理instanceOfA.MyEvent

在这种情况下,您可以将instanceOfX保持为私有,但您必须在在中间再添加一个事件。

WPF具有路由事件:

在元素树中的多个侦听器上调用处理程序,而不是仅针对引发事件的对象。

http://msdn.microsoft.com/en-us/library/ms742806.aspx