我只是在没有先调用 CanExecute 的情况下实现了对命令的 Execute 调用。
从调试中我会告诉 CanExecute 被调用了;但是,我不确定这是否是巧合。
我想知道我是否可以依赖这样一个事实,即每当我手动提出 Execute 时都会隐式调用 CanExecute ,或者我是否应该确保自己调用 CanExecute ?
我只是在没有先调用 CanExecute 的情况下实现了对命令的 Execute 调用。
从调试中我会告诉 CanExecute 被调用了;但是,我不确定这是否是巧合。
我想知道我是否可以依赖这样一个事实,即每当我手动提出 Execute 时都会隐式调用 CanExecute ,或者我是否应该确保自己调用 CanExecute ?
你不能依赖它。当 a绑定到启用命令的 UI 项(例如 Button )时调用CanExecute()
(通过Command
CommandManager
CanExecute()
Execute()
ICommand
但是,考虑到我必须在自己的代码中执行以下操作的频率,这是一个有趣的想法,而且还不错:
if (SomeCommand.CanExecute(null))
SomeCommand.Execute(null);
不,如果您只是调用 Execute 方法,它不会停止执行命令。如果你想这样做,你应该使用:
if(myCommand.CanExecute())
{
myCommand.Execute();
}
或者,如果您从绑定中使用该命令,则应在更改相应属性时引发 myCommand.RaiseCanExecuteChanged。