2009-01-14 98 views
0

有什么方法可以向WPF中的所有孩子广播一个RoutedEvent?WPF EventRouting给儿童

例如让我说我有一个有4个孩子的窗口。其中2人知道RoutedEvent'DisplayYourself'并正在聆听。我如何从窗口提出这个事件并将它发送给所有的孩子?

我看着RoutingStrategy和Bubble是错误的方向,隧道和直接不工作,因为我不知道我想把这个发送给哪个孩子。我只是想传播这个信息,让任何关心它的人处理它。

更新: 我在静态类中声明了事件。

public static class StaticEventClass 
    { 
     public static readonly RoutedEvent ClickEvent = 
     EventManager.RegisterRoutedEvent("Click", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(StaticEventClass)); 

     public static readonly RoutedEvent DrawEvent = 
     EventManager.RegisterRoutedEvent("Draw", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(StaticEventClass)); 
    } 

问题是,当我从我的窗口提出事件,孩子们从来没有看到它。

RoutedEventArgs args = new RoutedEventArgs(StaticEventClass.DrawEvent, this); 
this.RaiseEvent(args); 

再次更新..这里是孩子的处理程序。

public ChildClass() 
{ 
    this.AddHandler(StaticEventClass.DrawEvent, new RoutedEventHandler(ChildClass_Draw)); 
} 

回答

1

我认为问题是你不想要一个路由事件。只需在静态类上放置一个普通的旧公共clr事件,并附上你想要的任何东西。

-1

如果你创建了一个路由事件“MyWindow.MyRoutedEvent”你刚刚创建你的孩子是监听的事件的事件处理程序。由于RoutedEvent在窗口上声明为静态,因此您可以从其他窗口访问它。

+0

感谢您的回答。我确实将该事件声明为静态。我无法让孩子们听到这个事件?它永远不会被发送给他们。 – 2009-01-14 21:43:56