Я думаю, что у меня возникла какая-то вспышка знаний, и теперь я совершенно сбит с толку.Я смотрел на многие реализации mvvm, такие как Ocean, Stuff, BBQShack, демоверсия MVVM, WAF, Chinch1,2 и т. Д. *
Все делают MVVM как-то по-разному ...
Существует ОДИН сценарийэто сводит меня с ума.Мне не хватает понимания, и я надеюсь, что кто-то может очистить облака в моей голове.
Но прежде чем я хочу опубликовать комментарий от Джереми Ликнесс :
«Я полагаю, что большинство разработчиков согласны с тем, что представление должно иметь ровно одну модель представления. Нет необходимости присоединять несколько моделей представления к одному представлению. Если вы думаете о разделении интересов, это имеет смысл, потому что если у вас есть« виджет контакта »"на экране, привязанном к" контактной модели представления "и" виджету компании ", привязанному к" модели представления компании ", это должны быть отдельные представления, а не одно представление с двумя моделями представления."
Сценарий: Когда представление имеет ОДНУ ViewModel или ViewModel привязана к ОДНОМУ UserControl ...
Вопрос: Нужно ли создавать 3 UserControls CustomerView,OrderView, ProductView для каждой ViewModel?Если да, то как синхронизировать привязку данных в графическом интерфейсе между 3 пользовательскими элементами управления и 3 моделями представления в фоновом режиме?Использование системы обмена сообщениями?
Если ваш ответ ДА , то почему бы мне не создать ОДИН большой UserControl, связанный с BillingViewModel, действующим в качестве контроллера, который предоставляет свойство ObservableCollection CustomerListWithAllOrdersAndProducts, которое можно легко привязать кверхний контрольный текст данных и все 3 таблицы (клиент и т. д.), расположенные под ним, привязываются к текущему текстовому тексту.Тогда смена клиента автоматически изменит заказы и продукты ...
Как бы вы справились с этим сценарием, когда на экране есть не только 3 элемента UserControls, например DataGrids, но также имеется формуляр Customer с 5 текстовыми полями иa Формуляр заказа с 3 текстовыми полями, вы бы поместили эти формулы в еще 2 пользовательских элемента управления, чтобы у вас было 5 пользовательских элементов управления в окне, и все вместе "отображались" с помощью его ViewModel, взаимодействующей с системой Messenger.Это может очень запутать ... Неужели так делают в больших приложениях mvvm?