静的クラス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 のみを念頭に置いて設計されたという印象を受けました。
ビューモデルに伝達する必要があるコマンドはまったく使用可能ですか?