我只是在不调用CanExecute的情况下为一个Command执行一个调用。调用“command.Execute”是否首先隐式调用CanExecute?
从调试我会告诉虽然CanExecute被调用;然而,我不确定这是否巧合。
我想知道是否可以依赖CanExecute被隐式调用的事实,无论何时我手动提升Execute,或者如果我确保自己调用CanExecute?
我只是在不调用CanExecute的情况下为一个Command执行一个调用。调用“command.Execute”是否首先隐式调用CanExecute?
从调试我会告诉虽然CanExecute被调用;然而,我不确定这是否巧合。
我想知道是否可以依赖CanExecute被隐式调用的事实,无论何时我手动提升Execute,或者如果我确保自己调用CanExecute?
你不能依赖那个。 CanExecute()
在Command
绑定到启用命令的UI项目(如通过CommandManager
)时调用,但在Execute()
中检查CanExecute()
本身将是ICommand
的特定实现的实现细节,并不是暗示的。
然而,这是一个有趣的想法,而不是一个坏考虑我有多久做我自己的代码如下:
if (SomeCommand.CanExecute(null))
SomeCommand.Execute(null);
不,它不会停止从执行如果命令你只需调用Execute方法即可。 如果你想这样做,你应该使用:
if(myCommand.CanExecute())
{
myCommand.Execute();
}
或者,如果你正在使用从绑定您的命令应该提高myCommand.RaiseCanExecuteChanged改变相应的属性时。
默认情况下,命令执行程序负责验证命令是否可以执行。 – pushpraj 2014-08-27 12:01:49