Представете си, че имате изглед, който ще показва множество стъпки за събиране на данни. Въз основа на решенията в предишната стъпка, последователността или конкретните случаи на следващите стъпки ще варират.
Следвайки най-добрите практики на пуристите на MVVM, смятам, че наличието на списък с ViewModel във външния ViewModel е начинът да се справим с това и нека външният View обвърже персонализирана контрола на раздела (или подобна) към това.
Това ме навежда на два аспекта от това, които не са ми ясни:
Първа точка: „Кое дойде първо?“
Външната комбинация View / ViewModel вероятно ще бъде "View First". Това означава, че един изглед или получава ViewModel, или инстанцира такъв.
Но когато става въпрос за списъка с ViewModels в рамките на този външен ViewModel: Откъде идват съответните им ViewModels? Кой субект е отговорен за избора на най-добрия изглед за всеки от тях?
Не ми е приятно да редувам „Първо изглед“ и „Първо ViewModel“ по този начин.
Втора точка: Комуникация между ViewModel
Когато една от вътрешните стъпки на ViewModel е завършена, напр. при щракване върху бутон "Запазване" или "Напред", трябва да се задейства команда към този вътрешен ViewModel и след това трябва да се покаже следващият.
Това изисква външният ViewModel да:
можете да вземете командата Save, изпратена до вътрешния ViewModel
да имате достъп до данните във вътрешния ViewModel.
Как човек обикновено би постъпил за това? Счита ли се за лоша практика свързването на вътрешния и външния ViewModel заедно със събития?