我想知道是否有一种方法可以监视在WPF应用程序中引发的所有RoutedEvents。一种向控制台写入有关触发的事件的信息的方法将非常适合查看正在发生的事情。
发布于 2009-07-14 09:26:40
是的,但它需要一些反思。您最好使用像Snoop这样的工具,它已经为您完成了繁重的任务。
在 events 选项卡中,您可以看到事件列表以及处理它的元素。
发布于 2009-07-14 11:53:29
我找到了另一种方法:
我已经将这个添加到我的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语句。
https://stackoverflow.com/questions/1124348
复制相似问题