/// <summary> /// Executes the command on the given command source. /// </summary> internal static void CriticalExecuteCommandSource(ICommandSource commandSource, bool userInitiated) { ICommand command = commandSource.Command; if (command != null) { object parameter = commandSource.CommandParameter; IInputElement target = commandSource.CommandTarget; RoutedCommand routed = command as RoutedCommand; if (routed != null) { if (target == null) { target = commandSource as IInputElement; } if (routed.CanExecute(parameter, target)) { routed.ExecuteCore(parameter, target, userInitiated); } } else if (command.CanExecute(parameter)) { command.Execute(parameter); } } }