2014-08-27 54 views
1

我只是在不调用CanExecute的情况下为一个Command执行一个调用。调用“command.Execute”是否首先隐式调用CanExecute?

从调试我会告诉虽然CanExecute被调用;然而,我不确定这是否巧合。

我想知道是否可以依赖CanExecute被隐式调用的事实,无论何时我手动提升Execute,或者如果我确保自己调用CanExecute?

+1

默认情况下,命令执行程序负责验证命令是否可以执行。 – pushpraj 2014-08-27 12:01:49

回答

2

你不能依赖那个。 CanExecute()Command绑定到启用命令的UI项目(如通过CommandManager)时调用,但在Execute()中检查CanExecute()本身将是ICommand的特定实现的实现细节,并不是暗示的。

然而,这是一个有趣的想法,而不是一个坏考虑我有多久做我自己的代码如下:

if (SomeCommand.CanExecute(null)) 
    SomeCommand.Execute(null); 
1

不,它不会停止从执行如果命令你只需调用Execute方法即可。 如果你想这样做,你应该使用:

if(myCommand.CanExecute()) 
{ 
    myCommand.Execute(); 
} 

或者,如果你正在使用从绑定您的命令应该提高myCommand.RaiseCanExecuteChanged改变相应的属性时。

相关问题