下面是我的窗口中的构造函数和一个事件处理程序。
public MyWindow() {
InitializeComponent();
foreach (RoutedEvent routedEvent in EventManager.GetRoutedEvents())
{
EventManager.RegisterClassHandler(typeof(TestUnbuggerWindow), routedEvent, OnRoutedEvent, true);
}
}
public void OnRoutedEvent(Object sender, RoutedEventArgs args)
{
}
我正在尝试预览所有事件,因为我正在学习 WPF,我认为这可能会暴露一些看不见的事情。无论如何,我收到以下构建错误:
Error 1 The best overloaded method match for 'System.Windows.EventManager.RegisterClassHandler(System.Type, System.Windows.RoutedEvent, System.Delegate, bool)' has some invalid arguments
Error 2 Argument 3: cannot convert from 'method group' to 'System.Delegate'
我得到了循环来注册这个网站的所有活动。
我相信问题是由方法签名不匹配引起的,但我不确定。有人可以为我阐明这一点吗?
您需要使用处理程序显式
EventManager.RegisterClassHandler(typeof(TestUnbuggerWindow),
routedEvent, new RoutedEventHandler(OnRoutedEvent), true);
这是因为编译器需要知道您想要哪种类型的处理程序,并且由于签名采用Delegate
类型,因此无法推断您想要RoutedEventHandler
。