1

我只是在没有先调用 CanExecute 的情况下实现了对命令的 Execute 调用。

从调试中我会告诉 CanExecute 被调用了;但是,我不确定这是否是巧合。

我想知道我是否可以依赖这样一个事实,即每当我手动提出 Execute 时都会隐式调用 CanExecute ,或者我是否应该确保自己调用 CanExecute ?

4

2 回答 2

2

你不能依赖它。当 a绑定到启用命令的 UI 项(例如 Button )时调用CanExecute()(通过CommandCommandManagerCanExecute()Execute()ICommand

但是,考虑到我必须在自己的代码中执行以下操作的频率,这是一个有趣的想法,而且还不错:

if (SomeCommand.CanExecute(null))
    SomeCommand.Execute(null);
于 2014-08-27T12:01:54.537 回答
1

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

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

或者,如果您从绑定中使用该命令,则应在更改相应属性时引发 myCommand.RaiseCanExecuteChanged。

于 2014-08-27T12:03:46.083 回答