我只是在不調用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