Passing the EventArgs for the SingleEventCommand would be more helpful than passing null. Example: Passing KeyEventArgs for KeyDown would let you only execute some logic if a certain key was pressed.
To make this change, simply pass the EventArgs through as a parameter in the OnEventRaised method of the EventHooker class.
/// Runs the ICommand when the requested RoutedEvent fires
private void OnEventRaised(object sender, EventArgs e)
ICommand command = (ICommand)(sender as DependencyObject).
if (command != null)
command.Execute(e); // <--- change this from null to e to pass EventArgs