Я борюсь с MVVM в своем приложении. У меня есть TabControl, у каждой вкладки есть элемент управления, который позволяет каким-то образом редактировать файл. Например, текстовые файлы или изображения. Каждый элемент управления привязан к классу из области ViewModel (как показано на диаграмме). У меня также есть RoutedUICommands. Одна из этих команд - WordWrap и имеет смысл только в случае текстовых файлов. Эта команда используется в MenuItem или Button и т. Д. Я бы хотел включить ее только в том случае, если целью этой команды является текстовое управление. Как это сделать в соответствии с MVVM?RoutedUICommand в MVVM
Подробнее:
XAML для окна имеет:
пункт<Window.CommandBindings>
<CommandBinding Command="local:EditorCommands.WordWrap"
Executed="WordWrapExecuted"
CanExecute="CommandCanBeExecutedWhenAnythingIsOpen"/>
</Window.CommandBindings>
меню используется следующим образом:
<MenuItem Command="local:EditorCommands.WordWrap"/>
Первая вещь Выполненный и обработчики событий CanExecute: они находятся в классе Window, хотя мой недостаток Если MVVM, то логика должна быть только в ViewModel.
Более того, отправитель в этой функции является экземпляром окна. Почему это не цель команды?
Должен ли я писать своих собственных последователей RoutedUICommand для каждой команды?