最初に CanExecute を呼び出さずに、Command の Execute の呼び出しを実装しました。
デバッグから、 CanExecute が呼び出されていることがわかります。ただし、これが偶然かどうかはわかりません。
手動で Execute を発生させるたびに CanExecute が暗黙的に呼び出されるという事実に依存できるかどうか、または自分で CanExecute を確実に呼び出す必要があるかどうかを知りたいですか?
最初に CanExecute を呼び出さずに、Command の Execute の呼び出しを実装しました。
デバッグから、 CanExecute が呼び出されていることがわかります。ただし、これが偶然かどうかはわかりません。
手動で Execute を発生させるたびに CanExecute が暗黙的に呼び出されるという事実に依存できるかどうか、または自分で CanExecute を確実に呼び出す必要があるかどうかを知りたいですか?
あなたはそれに頼ることはできません。は、が ( を介して) ボタンなどのコマンド対応 UI アイテムにバインドされたCanExecute()
ときに呼び出されますが、チェックイン自体は の特定の実装の実装の詳細であり、暗示されません。Command
CommandManager
CanExecute()
Execute()
ICommand
ただし、これは興味深いアイデアであり、自分のコードで次のことを頻繁に行う必要があったことを考えると、悪いアイデアではありません。
if (SomeCommand.CanExecute(null))
SomeCommand.Execute(null);
いいえ、Execute メソッドを呼び出すだけでは、コマンドの実行は停止しません。そうしたい場合は、次を使用する必要があります。
if(myCommand.CanExecute())
{
myCommand.Execute();
}
または、バインディングからそのコマンドを使用している場合は、対応するプロパティを変更するときに myCommand.RaiseCanExecuteChanged を発生させる必要があります。