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

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

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

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

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

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

1 Ответ

1 голос
/ 21 декабря 2011

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

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

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

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

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

EDIT: Я бы посоветовал зарегистрироваться в уже существующем событии, чтобы убедиться, что ваш EditExtensionsEvent работает правильно.

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

private void MenuItemClick(object sender, RoutedEventArgs e)
{
   MessageBox.Show("Clicked");
}
...