私は自分のアプリケーションでMVVMに苦労しています。私はTabControlを持っています。TabControlはすべてのタブが何らかの形でファイルを編集できるコントロールをホストしています。例えば、テキストファイルまたは画像。各コントロールは、ViewModel領域のクラスにバインドされています(図のように)。私はRoutedUICommandsも持っています。これらのコマンドの1つはワードラップで、テキストファイルの場合にのみ意味があります。このコマンドは、MenuItemやButtonなどで使用されています。テキストコントロールがこのコマンドのターゲットである場合にのみ有効にしたいと思います。どのようにMVVMに応じて適切にそれを行うには?MVVM内のルーティングされたUIComm
詳細:Windowの
XAMLあり:メニュー項目をこのように使用され
<Window.CommandBindings>
<CommandBinding Command="local:EditorCommands.WordWrap"
Executed="WordWrapExecuted"
CanExecute="CommandCanBeExecutedWhenAnythingIsOpen"/>
</Window.CommandBindings>
:
<MenuItem Command="local:EditorCommands.WordWrap"/>
を最初にすることが実行されますCanExecuteイベントハンドラ:ウィンドウクラスにありますが、私のMVVMであるかどうかを理解するには、ロジックがViewModelのみである必要があります。
さらに、これらの機能の送信者は、ウィンドウのインスタンスです。なぜそれはコマンドの目標ではないのですか?
すべてのコマンドで自分の後継者をRoutedUICommandに書きますか?