public virtual bool CanExecute(object parameter) { bool hasEnabledCommandsThatShouldBeExecuted = false; ICommand[] commandList; lock (this.registeredCommands) { commandList = this.registeredCommands.ToArray(); } foreach (ICommand command in commandList) { if (this.ShouldExecute(command)) { if (!command.CanExecute(parameter)) { return false; } hasEnabledCommandsThatShouldBeExecuted = true; } } return hasEnabledCommandsThatShouldBeExecuted; }