我想知道是否有办法观看WPF应用程序中引发的所有RoutedEvent。写一些关于向控制台发射的事件的信息的方法将是完美的,看看发生了什么。
答案 0 :(得分:16)
我找到了另一种方式:
我已将此添加到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 语句。
答案 1 :(得分:12)
是的,但需要反思。你最好使用像Snoop这样的工具,它已经为你做了很难。
在标签事件中,您可以看到事件列表以及处理它的元素。