2014-08-27 40 views
1

我只是在不調用CanExecute的情況下爲一個Command執行一個調用。調用「command.Execute」是否首先隱式調用CanExecute?

從調試我會告訴雖然CanExecute被調用;然而,我不確定這是否巧合。

我想知道是否可以依賴CanExecute被隱式調用的事實,無論何時我手動提升Execute,或者如果我確保自己調用CanExecute?

+1

默認情況下,命令執行程序負責驗證命令是否可以執行。 – pushpraj 2014-08-27 12:01:49

回答

2

你不能依賴那個。 CanExecute()Command綁定到啓用命令的UI項目(如通過CommandManager)時調用,但在Execute()中檢查CanExecute()本身將是ICommand的特定實現的實現細節,並不是暗示的。

然而,這是一個有趣的想法,而不是一個壞考慮我有多久做我自己的代碼如下:

if (SomeCommand.CanExecute(null)) 
    SomeCommand.Execute(null); 
1

不,它不會停止從執行如果命令你只需調用Execute方法即可。 如果你想這樣做,你應該使用:

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

或者,如果你正在使用從綁定您的命令應該提高myCommand.RaiseCanExecuteChanged改變相應的屬性時。