Мне было интересно, есть ли способ просмотреть все RoutedEvents, которые были созданы в приложении WPF. Способ написать некоторую информацию о событиях, запущенных на консоль, будет префектом, чтобы увидеть, что происходит.
Есть ли способ смотреть WPF-маршруты?
Ответ 1
Да, но это требует некоторого отражения. Вам лучше использовать такой инструмент, как Snoop, который уже делает тяжелый подъем для вас.
На вкладке События вы можете увидеть список событий и элемент, который обрабатывал его.
Ответ 2
Я нашел другой способ:
Я добавил это к загруженному обработчику моего 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.