尝试在WPF / C#中注册所有事件时,为什么会出现构建错误?

时间:2012-05-24 02:21:50

标签: c# wpf delegates event-handling compiler-errors

下面是我窗口中的构造函数和事件处理程序。

    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的所有事件。

我认为这个问题是由于方法签名与某些内容不匹配造成的,但我不确定。有人可以为我阐明这个吗?

1 个答案:

答案 0 :(得分:1)

您需要使用处理程序明确

EventManager.RegisterClassHandler(typeof(TestUnbuggerWindow), 
     routedEvent, new RoutedEventHandler(OnRoutedEvent), true);

这是因为编译器需要知道您想要什么类型的处理程序,并且由于签名采用Delegate类型,因此无法推断您需要RoutedEventHandler