[英]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.