В статье Приложения WPF с шаблоном проектирования модель-представление-модель представления , автор, который Джош Смит сказал:
(1) В хорошо спроектированной архитектуре MVVM программный код для большинства представлений должен быть пустым или, самое большее, содержать только код, который управляет элементами управления и ресурсами, содержащимися в этом представлении. (2) Иногда также необходимо написать код в скрытом коде представления, который взаимодействует с объектом ViewModel, например, перехватывает событие или вызывает метод, который в противном случае было бы очень сложно вызвать из самой ViewModel.
Мой вопрос: , в (1), почему пустой код считается хорошо спроектированным MVVM. (Звучит так, что пустой код всегда хорош.)
РЕДАКТИРОВАТЬ: У меня следующий вопрос:почему такой подход, как AttachedCommandBehavior
или InvokeCommandAction
, пытается избежать кодирования с выделенным кодом.
Позвольте мне объяснить более подробно.
Что касается (1), Я бы подумал, как из AttachedCommandBehavior . Поскольку Border не реализует ICommandSource
для MouseRightButtonDown
, вы не можете обычно связывать событие и ICommand
, но можете сделать это с помощью AttachedCommandBehavior .
ИЛИ
Мы можем сделать это с помощью System.Windows.Interactivity.InvokeCommandAction
.
НО,
Мы используем следующий XAML и его внутренний код, имеющий Метод Border_MouseRightButtonDown
, который связан с (2) Джошем Симтом, указанным выше.
Я думаю, что использование выделенного кода, как указано выше, неплохо только потому, что разница между ними только в том, где привязать команду или добавить обработчик событий есть.
Что вы думаете об этом?
Шаблон MVVM мощен, но я нахожу его слишком 'Пуристским'. Я вижу, что преимущество имеет код позади дескриптора все команды и свойства в представлении, в то время как ViewModel обеспокоен любым переводом в свойства бизнес-модели. Преимущество этого - то, что, если Вы хотите изменить пользователя UI, возможно, от рабочего стола до браузера, он, вероятно, будет просто заменять Представление и его код позади.
Просто мои мысли!!