/// <summary> /// Hooks up a Dynamically created EventHandler (by using the /// <see cref="EventHooker">EventHooker</see> class) that, when run, /// runs the associated ICommand</summary> private static void OnRoutedEventNameChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { String routedEvent = (String)e.NewValue; //If the RoutedEvent string is not null, create a new //dynamically created EventHandler that when run will execute //the actual bound ICommand instance (usually in the ViewModel) if (!String.IsNullOrEmpty(routedEvent)) { EventHooker eventHooker = new EventHooker(); eventHooker.ObjectWithAttachedCommand = d; EventInfo eventInfo = d.GetType().GetEvent(routedEvent, BindingFlags.Public | BindingFlags.Instance); //Hook up Dynamically created event handler if (eventInfo != null) { eventInfo.AddEventHandler(d, eventHooker.GetNewEventHandlerToRunCommand(eventInfo)); } } }