静的クラスApplicationCommandsは多くRoutedUICommandの で構成され、一部は純粋にビューベースのコマンド (元に戻す/やり直し、切り取り/コピー/貼り付け) である可能性がありますが、他のものは最終的にビュー モデルを操作する必要があります。ただし、後者のコマンドのいずれかを使用する場合、たとえばSave、コマンドをビュー モデルに伝達するクリーンな方法はありません。
<CommandBindings>
<CommandBinding Command="Save" Executed="Save_Executed" />
</CommandBindings>
....
<MenuItem Command="Save" />
これにより、MVP パターンで使用されるように分離コード クラスでイベント ハンドラーが呼び出されますが、イベントハンドラーSave_Executedでこの醜い行を使用する場合を除き、コマンドを MVVM のビュー モデルに移動することはできません。Save_Executed:
((ViewModel1)this.DataContext).Save();
RelayCommandこれは、ビュー モデルで直接定義された sなどの他のコマンドとも完全に矛盾しています。これらすべての不都合のために、ApplicationCommands は MVVM ではなく MVP のみを念頭に置いて設計されたという印象を受けました。
ビューモデルに伝達する必要があるコマンドはまったく使用可能ですか?