Есть ли способ транслировать RoutedEvent всем моим детям в WPF?
Например, допустим, у меня есть окно с 4 дочерними элементами. Двое из них знают о 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 в статический класс и прикрепите к нему все, что хотите.
Спасибо за ответ. Я объявил событие статическим. Я просто не могу заставить детей услышать это событие? Им никогда не отправляют.