我的MainWindow中有一个事件被我的一个子控件作为路由事件触发。 MainWindow有一个AddHandler调用来捕获路由火。
我想从另一个子元素中触发这个相同的事件,但是这个元素(一个menuItem)是动态创建的,所以当我尝试在MainWindow中使用AddHandler时,如:
this.AddHandler(MyMenuItem.EditExtensionsEvent, new RoutedEventHandler(this.EditExtensions));
我得到一个null参数异常,因为MyMenuItem尚不存在。
任何人都知道我仍然可以使用路由事件吗?
答案 0 :(得分: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");
}