RoutedUICommand
次のように、コードビハインドからカスタムを手動で実行する場合:
MyCommands.MyCommand.Execute(parameter, target)
最初にメソッドを呼び出す必要がありますかCanExecute
、それともメソッド内ですでに実行されていExecute
ますか?
RoutedUICommand
次のように、コードビハインドからカスタムを手動で実行する場合:
MyCommands.MyCommand.Execute(parameter, target)
最初にメソッドを呼び出す必要がありますかCanExecute
、それともメソッド内ですでに実行されていExecute
ますか?
CanExecute が Execute で呼び出されると想定しないでください。ICommand のインターフェイスは、Execute が呼び出されたときに CanExecute を呼び出すことを意味しないため、CanExecute が true の場合にのみ実行することが重要な場合は、自分で確認してください。
また、RoutedUICommand の逆コンパイルされたコードをスキャンすると、Execute 内で CanExecute をチェックする場所がどこにもありません。
実際には、Execute/CanExecute をいつ呼び出すかを決定するのは消費者の責任です。
必要に応じて CanExecute を手動で呼び出す必要があります。Execute はチェックしません。
CanExecute
メソッドによって呼び出されると想定しないでくださいExecute
。その動作を強制するものは何もないためです。だからIMOはあなた自身を呼ぶべきCanExecute
です