想象一下有一个视图,它将展示多个数据收集步骤。根据前面的决策,后续步骤的顺序或特定实例会有所不同。
遵循MVVM纯洁主义的最佳实践,我认为在外部ViewModel中拥有一个ViewModel列表是处理这个问题的方法,然后让外部视图将自定义选项卡控件(或类似控件)绑定到该列表。
这让我想到了两个方面,这对我来说还不太清楚:
第一点:“哪个先出现?”
外部视图/ViewModel组合可能是“视图优先”。也就是说,视图要么接收一个ViewModel,要么实例化一个ViewModel。
但是当涉及到此外部ViewModel中的ViewModel列表时:它们各自的视图从哪里来?哪个实体负责为它们选择最佳视图?
我并不完全舒服地在“视图优先”和“ViewModel优先”之间交替使用。
第二点:ViewModel之间的通信
当完成其中一个内部ViewModel步骤时,例如单击“保存”或“下一步”按钮,应向该内部ViewModel发送命令,然后显示下一个步骤。
这需要外部ViewModel:
能够接收发送到内部ViewModel的保存命令
能够访问内部ViewModel中的数据。
通常如何处理这种情况?将内部和外部ViewModel绑定在一起是不是不好的实践?