#594 – Routed Events Under the Covers
July 4, 2012 Leave a comment
Traditional CLR events are basically a wrapper around a private instance of a multicast delegate type. When you add an event handler using the += operator, your handler gets added to the delegate’s invocation list.
// CLR event under the covers private EventHandler barked; public event EventHandler Barked { add { barked += value; } remove { barked -= value; } }
Routed events in WPF look like standard CLR events because they are exposed via a CLR event. But they are implemented differently.
When you use += for a routed event, the UIElement.AddHandler method is called.
// From ButtonBase.cs public static readonly RoutedEvent ClickEvent; public event RoutedEventHandler Click { add { AddHandler(ClickEvent, value); } remove { RemoveHandler(ClickEvent, value); } }
The AddHandler method adds information about both the event and the handler to list of event handlers that is stored within the UIElement, used when the event is raised.