Как использовать перенаправленное событие от дочернего элемента, который создается на лету?

У меня есть событие в моем MainWindow, которое запускается из одного из моих дочерних элементов управления как перенаправленное событие. MainWindow имеет вызов AddHandler, чтобы поймать перенаправленный огонь.

Я хотел бы запустить это же событие из ДРУГОГО дочернего элемента, но этот элемент (menuItem) создается на лету, поэтому, когда я пытаюсь использовать AddHandler в MainWindow, например:

 this.AddHandler(MyMenuItem.EditExtensionsEvent, new RoutedEventHandler(this.EditExtensions));

Я получаю исключение с нулевым аргументом, потому что MyMenuItem еще не существует.

Кто-нибудь знает, как я могу использовать перенаправленное событие?

1 ответ

Решение

Я предполагаю, что ваш MyMenuItem либо не находится в пространстве имен вашего приложения, либо EditExtensionsEvent не является статическим RoutedEvent класса MyMenuItem.

Это должно выглядеть примерно так:

public class MyMenuItem
{
public static readonly RoutedEvent EditExtensionsEvent
..
}

см. http://msdn.microsoft.com/en-us/library/ms752288.aspx

Если он объявлен таким образом, он должен работать так, как вы показали здесь

РЕДАКТИРОВАТЬ: Я бы предложил зарегистрироваться с уже существующим событием, чтобы убедиться, что ваш EditExtensionsEvent работает должным образом.

public MainWindow()
{
  ..
  this.AddHandler(MenuItem.ClickEvent, new RoutedEventHandler(this.MenuItemClick));
}

private void MenuItemClick(object sender, RoutedEventArgs e)
{
   MessageBox.Show("Clicked");
}
Другие вопросы по тегам