Мне было интересно, есть ли способ просмотреть все RoutedEvents, которые возникают в приложении WPF. Способ написать некоторую информацию о событиях, запущенных на консоль, был бы идеальным, чтобы увидеть, что происходит.
Есть ли способ посмотреть маршрутизируемые события WPF?
Ответы (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