代码之家  ›  专栏  ›  技术社区  ›  Shaun Bowe

WPF事件路由到儿童

  •  2
  • Shaun Bowe  · 技术社区  · 17 年前

    有没有办法在WPF中向我的所有孩子广播RoutedEvent?

    例如,假设我有一个有4个孩子的窗口。其中2人知道RoutedEvent的“展示你自己”并正在收听。我如何从窗口发起此事件并将其发送给所有孩子?

    我看着 RoutingStrategy Bubble是错误的方向,Tunnel和Direct不起作用,因为我不知道我想把这个发给哪些孩子。我只是想广播这个消息,让关心它的人处理它。

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

        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));
    }
    
    2 回复  |  直到 17 年前
        1
  •  1
  •   David    14 年前

    我认为问题在于你不想安排一个活动。只需在静态类上放置一个常规的旧公共clr事件,并将任何您想要的东西附加到它。

        2
  •  -1
  •   Micah    17 年前

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