1

最初に CanExecute を呼び出さずに、Command の Execute の呼び出しを実装しました。

デバッグから、 CanExecute が呼び出されていることがわかります。ただし、これが偶然かどうかはわかりません。

手動で Execute を発生させるたびに CanExecute が暗黙的に呼び出されるという事実に依存できるかどうか、または自分で CanExecute を確実に呼び出す必要があるかどうかを知りたいですか?

4

2 に答える 2

2

あなたはそれに頼ることはできません。は、が ( を介して) ボタンなどのコマンド対応 UI アイテムにバインドされたCanExecute()ときに呼び出されますが、チェックイン自体は の特定の実装の実装の詳細であり、暗示されません。CommandCommandManagerCanExecute()Execute()ICommand

ただし、これは興味深いアイデアであり、自分のコードで次のことを頻繁に行う必要があったことを考えると、悪いアイデアではありません。

if (SomeCommand.CanExecute(null))
    SomeCommand.Execute(null);
于 2014-08-27T12:01:54.537 に答える
1

いいえ、Execute メソッドを呼び出すだけでは、コマンドの実行は停止しません。そうしたい場合は、次を使用する必要があります。

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

または、バインディングからそのコマンドを使用している場合は、対応するプロパティを変更するときに myCommand.RaiseCanExecuteChanged を発生させる必要があります。

于 2014-08-27T12:03:46.083 に答える