Как использовать перенаправленное событие от дочернего элемента, который создается на лету?
У меня есть событие в моем 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");
}