为什么我在尝试在 WPF/C# 中注册所有事件时出现生成错误

本文关键字:事件 错误 注册 WPF 为什么 | 更新日期: 2023-09-27 18:35:13

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

    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'

我得到了循环来注册这个网站的所有活动。

我相信问题是由方法签名不匹配引起的,但我不确定。有人可以为我阐明这一点吗?

为什么我在尝试在 WPF/C# 中注册所有事件时出现生成错误

您需要使用处理程序显式

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

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