下面是我窗口中的构造函数和事件处理程序。
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'
我得到了循环来注册来自this website的所有事件。
我认为这个问题是由于方法签名与某些内容不匹配造成的,但我不确定。有人可以为我阐明这个吗?
答案 0 :(得分:1)
您需要使用处理程序明确
EventManager.RegisterClassHandler(typeof(TestUnbuggerWindow),
routedEvent, new RoutedEventHandler(OnRoutedEvent), true);
这是因为编译器需要知道您想要什么类型的处理程序,并且由于签名采用Delegate
类型,因此无法推断您需要RoutedEventHandler
。