Just a brief post with a code snippet demonstrating how to create a custom event with WPF… for most this won’t be unfamiliar, but for those who are new to UI development, this is key…

Below is the snippet where I register the event. In this example, I have a Save button in a user control (called ‘MyUserControl’), and the click of that Save button needs to be heard in the parent window. The event is called ‘SaveButtonClickedEvent’…

public static readonly RoutedEvent SaveButtonClickedEvent = EventManager.RegisterRoutedEvent(“SaveButtonClicked”, RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyUserControl));

I now expose my custom event so I can add a handler in the main window…

public event RoutedEventHandler SaveButtonClicked {

add { AddHandler(SaveButtonClickedEvent, value); }

remove { RemoveHandler(SaveButtonClickedEvent, value); }


Now, when the saved button in the user control is actually clicked I use the following line of code to raise the event up to the parent…

RaiseEvent(new RoutedEventArgs(MyUserControl.SaveButtonClickedEvent, some_args_here));

… where ‘some_args_here’ can be any value or object.

Finally, I can add a listenter for the event in my main window with the following lines…

MyUserControl myUserControl = new MyUserControl();

myUserControl.SaveButtonClicked += new RoutedEventHandler(MyUserControl_SaveButtonClicked);

Simple. The ‘some_args_here’ object can then be found in the event args under e.OriginalSource.


Comments (1)

  1. Yossi says:


    What is the diference from a "regular" .NET events?