WPF コマンドの使用方法と、それらが MVVM パターンにどのように適合するかを学習しようとしています。ボタンやメニューなどの一部のコントロールには Command プロパティがあり、ICommand クラスのインスタンスに設定するとボタンがそのコマンドに接続されることを理解しています。これが設定されると、ボタンはコマンドの CanExecuteChanged イベントで無効化および有効化され、コントロールをクリックするとコマンドの Execute メソッドが呼び出されます。
しかし、各 ICommand のインスタンスはどこに置くべきでしょうか? チュートリアルでさまざまなオプションを見てきましたが、どれが正しいのかわかりません。一部の例では、静的な「ApplicationCommands」クラスが作成され、各コマンドのインスタンスがそのクラスの静的プロパティに割り当てられます。他の例では、コマンドが ViewModel のプロパティとして設定されているのを見てきました。他の例では、View/Window 自体のプロパティとして設定されています。コマンド インスタンスを配置するのに適した場所は?
また、コマンドはビュー、ビュー モデル、またはモデルにどのように関連していますか? これらのコンポーネントのうち、コマンドが認識または操作する必要があるのはどれですか? コマンドが実行されるとどうなりますか? ビューモデル/ビューに変更を伝えるモデルのメソッドを呼び出す必要がありますか? または、コマンドはビュー モデルのメソッドを介してモデルと通信する必要がありますか?