В MVVM кто несет ответственность за управление созданием новых видов (текущий вид или его модель представления)? - PullRequest
2 голосов
/ 21 января 2011

Сценарий: -Приложение загружает ViewA и связанный с ним ViewModelA.-ViewA имеет кнопку с привязкой команды к команде в ViewModelA.-ViewModelA обрабатывает команду, и экземпляр ViewB должен быть создан и показан.Вопрос в том, кто должен отвечать за создание экземпляра ViewB?Представляется разумным, что ViewModel не должен ничего знать о представлениях, поэтому я вижу несколько возможностей, которые могут сработать:1) ViewModelA может установить свойство, которое отслеживается ViewA, чтобы ViewA знал, как создать экземпляр ViewB.Но это похоже на то, что было бы слишком много ответственности за ViewA.2) Вы можете добавить какой-либо вид сервиса ViewManager в ViewModelA, и когда он обрабатывает команду из ViewA, он может использовать параметр команды для передачи каких-либо соответствующих метаданных в метод LoadView (метаданные) ViewManager.

1 Ответ

0 голосов
/ 21 января 2011

Посмотрите на ответ от arconaut (даже если он не был принят в то время, кажется, что это самый чистый подход:

  • В вашей ViewModel используйте некоторыесвоего рода шаблон посредника (или что-то вроде EventAggregator) для «публикации» сообщения CreateView
    • Имеет где-то класс, называемый чем-то вроде ViewManager, чья ответственность будет заключаться в том, чтобы включать все сообщения CreateView и создаватьсоответствующие виды

Это почти как ваше второе предложение, чуть более слабо связанное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...