事件处理了2级

时间:2012-03-02 10:27:11

标签: c# wpf oop events c#-4.0

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

因此 ClassB - > 包含的实例 - > ClassA - > ,其中包含的实例 - >的目标x

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

这个概念叫什么(事件委托,事件路由......)?怎么办呢?

2 个答案:

答案 0 :(得分:1)

在WPF中,它被称为Routed events,但只有当这两个都成立时才会起作用:

  1. 我们谈论的是元素类,'contains'意味着你的一个控件实际上包含另一个[和LogicalTreeHelper状态,你的控件是父母/子女彼此。
  2. 如果您要查找的事件被定义为使用正确的路由策略进行路由,则tunelledbubbling将起作用。如果不是,则路由事件对您没有帮助。
  3. 我觉得你需要的就是这样:

    B类

    this.instanceOfA.InstanceOfX.MyEvent += MyHandlerInClassB;
    

    但这与WPF无关。


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

    1. classA上定义同一事件,并在instanceOfX举起事件时提出该事件
    2. ClassB句柄instanceOfA.MyEvent
    3. 在这种情况下,您可以将instanceOfX设为私有,但您必须在中间再添加一个事件。

答案 1 :(得分:0)

WPF有路由事件:

  

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

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