我刚刚为Command执行了一个Execute调用,而没有先调用CanExecute。
从调试开始我会告诉CanExecute被调用;但是,我不确定这是不是巧合。
我想知道我是否可以依赖每当我手动提升执行时隐式调用CanExecute的事实,或者我是否应该确保自己调用CanExecute?
答案 0 :(得分:2)
你不能依赖它。 CanExecute()
被Command
绑定到启用命令的UI项目(如CommandManager
),但在CanExecute()
本身检查Execute()
时会调用ICommand
是if (SomeCommand.CanExecute(null))
SomeCommand.Execute(null);
的具体实现的实现细节,并不暗示。
然而,考虑到我在自己的代码中必须执行以下操作的频率,这是一个有趣的想法,并不是一个糟糕的想法:
{{1}}
答案 1 :(得分:1)
不,如果您只是调用Execute方法,它不会停止执行命令。 如果你想这样做,你应该使用:
if(myCommand.CanExecute())
{
myCommand.Execute();
}
或者如果从绑定中使用该命令,则在更改相应的属性时应该引发myCommand.RaiseCanExecuteChanged。