C# WPF事件路由到子级

C# WPF事件路由到子级,c#,.net,wpf,events,xaml,C#,.net,Wpf,Events,Xaml,有没有办法在WPF向我所有的孩子广播一个RoutedEvent 例如,假设我有一个有4个孩子的窗口。其中2人知道RoutedEvent“DisplayYourself”并正在收听。如何从窗口引发此事件并将其发送给所有儿童 我看了看,泡泡是错误的方向,隧道和直接不起作用,因为我不知道我想把这个给哪个孩子。我只想传播这条信息,让关心它的人来处理它 更新: 我在一个静态类中声明了事件 public static class StaticEventClass { public

有没有办法在WPF向我所有的孩子广播一个RoutedEvent

例如,假设我有一个有4个孩子的窗口。其中2人知道RoutedEvent“DisplayYourself”并正在收听。如何从窗口引发此事件并将其发送给所有儿童

我看了看,泡泡是错误的方向,隧道和直接不起作用,因为我不知道我想把这个给哪个孩子。我只想传播这条信息,让关心它的人来处理它

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

    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));
}

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

我认为问题在于您不想要路由事件。只需在静态类上放置一个常规的旧公共clr事件,并附加任何您想要的内容。

谢谢您的回答。我确实将事件声明为静态。我就是不能让孩子们听到这件事?它永远不会被发送给他们。