How to invoke click event in WPF programmatically

WPF is still relatively new and many developers are only scratching the surface of its abilities. Coming from a different framework, one must learn anew how to do the familiar tasks. Sometimes you need to to trigger a click or some other event for one of your WPF controls, such as a button, a menu or a checkbox, directly from code. There are no methods on the controls to invoke these events explicitly. However there is a simple and generic way to do it which works as fine - just use RaiseEvent method like this (assuming you have a MenuItem object called item):

  1. var item = new MenuItem();
  2. [...]
  3. item.RaiseEvent(new RoutedEventArgs(MenuItem.ClickEvent));

That's it. The only thing to be careful with is calling RaiseEvent from inside another event handler for the object. And, of course, as any other GUI-related method, this should be done on the GUI thread, otherwise you'll get a runtime exception.

If you find yourself invoking events from code like this all too often, this might be a perfect time to refactor your design, before things get too complicated and GUI and the underlying business logic become too intertwined.


Add new comment

Subscribe to Comments for "How to invoke click event in WPF programmatically"