16

我想知道是否有办法查看 WPF 应用程序中引发的所有 RoutedEvents。一种编写有关向控制台触发的事件的信息的方法将非常适合查看发生了什么。

4

2 回答 2

19

我找到了另一种方法:

我已将此添加到我的 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语句。

于 2009-07-14T11:53:28.700 回答
15

是的,但它需要一些反思。您最好使用像Snoop这样已经为您完成繁重工作的工具。

在选项卡事件中,您可以看到事件列表以及处理它的元素。

于 2009-07-14T09:26:40.277 回答