2009-07-14 29 views
10

我想知道是否有方法來觀察WPF應用程序中引發的所有RoutedEvents。寫一些關於事件觸發到控制檯的信息的方法將是完美的,看看發生了什麼。有沒有辦法看WPF路由事件?

回答

11

是的,但它需要一些反思。你最好使用像Snoop這樣的工具,它已經爲你解決了難題。

在選項卡事件您可以看到事件列表和處理它的元素。

14

我找到了另一種方式:

我已經添加到了我的用戶的負載處理程序。

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陳述。