我想知道是否有办法观察WPF应用程序中引发的所有RoutedEvent.写一些关于向控制台发起的事件的信息的方法将是完美的,看看发生了什么.
我找到了另一种方式:
我已将此添加到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语句即可.
是的,但需要反思.你最好使用像Snoop这样的工具,它已经为你提升了硬度.
在选项卡事件中,您可以看到事件列表以及处理事件的元素.