簡體   English   中英

調用“command.Execute”是否先隱式調用CanExecute?

[英]Does calling “command.Execute” implicitly call CanExecute first?

我剛剛為Command執行了一個Execute調用,而沒有先調用CanExecute。

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

我想知道我是否可以依賴於每當我手動提升執行時隱式調用CanExecute的事實,或者我是否應該確保自己調用CanExecute?

你不能依賴它。 CanExecute()時被調用Command勢必像一個按鈕(通過啟用命令UI項CommandManager ),但檢查CanExecute()Execute()本身就是其具體實現的實現細節ICommand並沒有暗示。

然而,考慮到我在自己的代碼中必須執行以下操作的頻率,這是一個有趣的想法而不是一個糟糕的想法:

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

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

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

或者,如果從綁定中使用該命令,則應在更改相應屬性時引發myCommand.RaiseCanExecuteChanged。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM