Я даю презентацию об использовании MVVM в реальных приложениях, и я включаю раздел о конструктивных решениях религиозных войн, связанных с использованием MVVM в качестве шаблона в вашем приложении. В приложении MVVM существуют два основных способа (которые я знаю) для создания новой пары View/ViewModel:
- View-First, в котором вы создаете представление, и он создает свой собственный ViewModel и устанавливает его в свой DataContext.
- ViewModel-First, в котором вы создаете новые модели представлений и создаете новые представления в ответ на изменения свойств ViewModel, обычно с помощью ItemsControls и/или DataTemplates.
В вашем опыте, каковы плюсы и минусы каждого метода? Что они разрешают и с какими проблемами сталкиваются каждый?
Сводка результатов
- Просмотр первой - Плюсы
- Легко отслеживать, какой ViewModel используется в представлении
- Просмотр первой - Против
- Не позволяет использовать один вид с несколькими ViewModels
- Требуется дополнительное событие для обработки связи между Views и ViewModels.
- ViewModel First - Профили
- Позволяет более полное тестирование логики для открытия новых видов и ViewModels
- Как правило, DRYer становится больше приложений
- View и ViewModel более независимы и могут работать более легко.
- ViewModel First - Против
- Сложнее настроить в Silverlight без DataTemplateSelector и напечатать DataTemplates.