wpf

Monitoring routed events in WPF

A few days ago I wanted to monitor all routed events fired in my application. Because I am running an XBAP application inside a browser windows, Snoop wasn’t very helpful (it usually is). Because all routed events are basically the same, you can handle them all with one singe event handler. Using the EventManger it is possible to get all routed events and register a class handler for every one of them.

The code below is a stripped down version of the code I’ve got implemented. When loaded, it gets all events. Than it loops to them and assigns a handler to them. It writes every event that is caught to the console. If you are using commands, you may way to filter them out, because very often the CanExecute and PreviewCanExecute events are raised on every command registered.

 

 

public partial class myUserControl: UserControl
{
 
  public  myUserControl()
  {
    InitializeComponent();
    Loaded += myUserControlLoaded
  }
  
  void myUserControlLoaded(object sender, RoutedEventArgs e)
  {
    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)
  {
    Console.WriteLine(e.OriginalSource + "=>" + e.RoutedEvent);
  }
}
Shout it
Tags van Technorati: WPF, RoutedEvent
dotNed blogger
kick it on DotNetKicks.com

 

 

Angular 2 and NodeJS - The Practical Guide to MEAN Stack 2.0

The Complete Node.js Developer Course (2nd Edition)

Leave a Reply

Seo wordpress plugin by www.seowizard.org.
%d bloggers like this: