2009-07-14 20 views
10

Ich habe mich gefragt, ob es eine Möglichkeit gibt, alle RoutedEvents zu sehen, die in einer WPF-Anwendung ausgelöst werden. Ein Weg, um Informationen über die Ereignisse zu schreiben, die auf die Konsole gefeuert werden, wäre perfekt, um zu sehen, was vor sich geht.Gibt es eine Möglichkeit, WPF Routed Events zu sehen?

Antwort

11

Ja, aber es erfordert einige Überlegungen. Sie sind besser dran mit einem Werkzeug wie Snoop, das bereits das harte Heben für Sie erledigt.

In der Registerkarte Ereignisse können Sie Liste der Ereignisse und das Element, das es behandelt.

14

Ich habe eine anderen Weg gefunden:

ich dies auf die geladenen Handler meiner Usercontrol hinzugefügt habe.

var events = EventManager.GetRoutedEvents(); 
foreach (var routedEvent in events) 
{ 
    EventManager.RegisterClassHandler(typeof(myUserControl), 
             routedEvent, 
             new RoutedEventHandler(handler)); 
} 

und dies ist die Handler-Methode:

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); 
} 

Die CanExecute Ereignisse sind ein bisschen zu viel in meinem Fall. Wenn Sie diese auch sehen möchten, entfernen Sie einfach die wenn Aussage.

Verwandte Themen