WPF EventRouting to Children - PullRequest
       12

WPF EventRouting to Children

0 голосов
/ 15 января 2009

Есть ли способ передать RoutedEvent всем моим детям в WPF?

Например, допустим, у меня есть окно с 4 детьми. 2 из них знают о RoutedEvent 'DisplayYourself' и слушают его. Как я могу вызвать это событие из окна и отправить его всем детям?

Я посмотрел на 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 ]

1 голос
/ 07 мая 2010

Я думаю, проблема в том, что вы не хотите перенаправить событие. Просто поместите обычное старое общедоступное событие clr в статический класс и присоедините к нему все, что вы хотите.

0 голосов
/ 15 января 2009

Если вы создаете перенаправленное событие, такое как «MyWindow.MyRoutedEvent», вы просто создаете обработчик событий для своих детей, которые прослушивают событие. Поскольку RoutedEvent объявлено как статическое в вашем окне, у вас есть доступ к нему из других окон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...