呼叫“;命令执行“;先隐式调用CanExecute
本文关键字:调用 CanExecute 执行 命令 呼叫 | 更新日期: 2023-09-27 18:19:39
我刚刚实现了对命令的Execute调用,而没有首先调用CanExecute。
从调试中我可以看出CanExecute是被调用的;然而,我不确定这是否是巧合。
我想知道我是否可以依赖这样一个事实,即每当我手动调用Execute时,CanExecute都会被隐式调用,或者我是否应该确保自己调用CanExecute?
你不能依赖它。当Command
(通过CommandManager
)绑定到类似按钮的启用命令的UI项时调用CanExecute()
,但在Execute()
中检查CanExecute()
本身将是ICommand
的特定实现的实现细节,而不是隐含的。
然而,考虑到我经常在自己的代码中执行以下操作,这是一个有趣的想法,而且还不错:
if (SomeCommand.CanExecute(null))
SomeCommand.Execute(null);
不,如果您只调用execute方法,它不会阻止命令的执行。如果你想这样做,你应该使用:
if(myCommand.CanExecute())
{
myCommand.Execute();
}
或者,如果从绑定中使用该命令,则在更改相应的属性时应引发myCommand.RaiseCanExecuteChanged。