Представьте, что у вас есть представление, в котором будут показаны несколько этапов сбора данных. В зависимости от решений, принятых на предыдущем шаге, последовательность или конкретные примеры следующих шагов будут отличаться.
Следуя лучшим практикам MVVM-пуриста, я полагаю, что наличие списка ViewModel во внешней ViewModel - это способ сделать это, и позволить внешнему View привязать к нему настраиваемый элемент управления вкладкой (или аналогичный).
Это подводит меня к двум непонятным мне аспектам:
Вопрос первый: «Что было первым?»
Внешняя комбинация View / ViewModel, вероятно, будет «View First». То есть представление либо получает ViewModel, либо создает его экземпляр.
Но когда дело доходит до списка ViewModels внутри этой внешней ViewModel: откуда берутся их соответствующие представления? Какая организация отвечает за выбор лучшего обзора для каждого из них?
Мне не очень нравится чередовать «сначала просмотр» и «сначала модель просмотра», как это.
Пункт второй: взаимодействие между моделями просмотра
Когда один из внутренних шагов ViewModel завершен, например при нажатии кнопки «Сохранить» или «Далее» для этой внутренней ViewModel должна быть запущена команда, а затем должна быть показана следующая.
Для этого требуется, чтобы внешний ViewModel:
иметь возможность подобрать команду "Сохранить", отправленную во внутреннюю модель просмотра.
иметь возможность доступа к данным во внутренней ViewModel.
Как обычно можно это сделать? Считается ли плохой практикой связывать внутреннюю и внешнюю ViewModel вместе с событиями?