Есть ли способ посмотреть WPF Routed Events? - PullRequest
12 голосов
/ 14 июля 2009

Мне было интересно, есть ли способ просмотреть все RoutedEvents, которые возникают в приложении WPF. Способ написать некоторую информацию о событиях, запущенных на консоли, был бы префектом, чтобы увидеть, что происходит.

Ответы [ 2 ]

16 голосов
/ 14 июля 2009

Я нашел другой способ:

Я добавил это в загруженный обработчик моего 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 .

12 голосов
/ 14 июля 2009

Да, но это требует некоторого отражения. Вам лучше использовать такой инструмент, как Snoop , который уже делает тяжелую работу за вас.

На вкладке События вы можете увидеть список событий и элемент, который его обработал.

...