/// <summary> /// Hooks up a Dynamically created EventHandler (by using the /// <see cref="EventHooker">EventHooker</see> class) that when /// run will run the associated ICommand /// </summary> private static void OnRoutedEventNameChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { String routedEvent = (String)e.NewValue; if (d == null || String.IsNullOrEmpty(routedEvent)) { return; } //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) 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.RemoveEventHandler(d, eventHooker.GetNewEventHandlerToRunCommand(eventInfo)); eventInfo.AddEventHandler(d, eventHooker.GetNewEventHandlerToRunCommand(eventInfo)); } }
/// <summary> /// Hooks up a Dynamically created EventHandler (by using the /// <see cref="EventHooker">EventHooker</see> class) that when /// run will run the associated ICommand /// </summary> private static void OnRoutedEventNameChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { String routedEvent = (String)e.NewValue; if (d == null || String.IsNullOrEmpty(routedEvent)) return; //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) 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.RemoveEventHandler(d, eventHooker.GetNewEventHandlerToRunCommand(eventInfo)); eventInfo.AddEventHandler(d, eventHooker.GetNewEventHandlerToRunCommand(eventInfo)); } }