16

WPF アプリケーションで発生するすべての RoutedEvents を監視する方法があるかどうか疑問に思っていました。コンソールに発生したイベントに関する情報を書き込む方法は、何が起こっているかを確認するのに最適です。

4

2 に答える 2

19

別の方法を見つけました:

これを UserControl のロード済みハンドラーに追加しました。

var events = EventManager.GetRoutedEvents();
foreach (var routedEvent in events)
{
    EventManager.RegisterClassHandler(typeof(myUserControl), 
                                      routedEvent, 
                                      new RoutedEventHandler(handler));
}

これはハンドラーメソッドです:

internal static void handler(object sender, RoutedEventArgs e)
{
    if (e.RoutedEvent.ToString() != "CommandManager.PreviewCanExecute" &&
            e.RoutedEvent.ToString() != "CommandManager.CanExecute")
        Console.WriteLine(e.OriginalSource+"=>"+e.RoutedEvent);
}

私の場合、 CanExecuteイベントは少し多すぎます。これらも見たい場合は、ifステートメントを削除してください。

于 2009-07-14T11:53:28.700 に答える
15

はい、しかし、それにはいくつかの反省が必要です。Snoopのような、面倒な作業を既に行ってくれるツールを使用する方がよいでしょう。

[イベント] タブでは、イベントのリストとそれを処理した要素を確認できます。

于 2009-07-14T09:26:40.277 に答える