0

以下は私のウィンドウのコンストラクターとイベントハンドラーです。

    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'

このウェブサイトからすべてのイベントに登録するためのループを取得しました。

この問題は、メソッドのシグネチャが何かと一致しないことが原因であると思いますが、よくわかりません。誰かが私のためにこれに光を当てることができますか?

4

1 に答える 1

1

ハンドラーを明示的に使用する必要があります

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

これは、コンパイラーが必要なハンドラーのタイプを知る必要があり、署名がDelegateタイプをとるため、必要なことを推測できないためですRoutedEventHandler

于 2012-05-24T02:37:18.507 に答える