0

我的 MainWindow 中有一个事件作为路由事件从我的一个子控件中触发。MainWindow 有一个 AddHandler 调用来捕捉路由火灾。

我想从另一个子元素触发同样的事件,但是这个元素(一个 menuItem)是动态创建的,所以当我尝试在 MainWindow 中使用 AddHandler 时,比如:

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

我得到一个空参数异常,因为 MyMenuItem 还不存在。

有人知道我仍然可以使用路由事件的方法吗?

4

1 回答 1

1

我假设您的 MyMenuItem 不在应用程序的命名空间中,或者 EditExtensionsEvent 不是 MyMenuItem 类的静态 RoutedEvent。

它应该看起来像这样:

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");
}
于 2011-12-21T18:13:41.083 回答