Есть ли способ посмотреть маршрутизируемые события WPF?

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


person Sorskoot    schedule 14.07.2009    source источник


Ответы (2)


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

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

person Kent Boogaart    schedule 14.07.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.

person Sorskoot    schedule 14.07.2009