在许多ViewModel中,我需要来自另一个ViewModel的集合。基本上,每个VIewModel都有一个类型为ObservableCollection的List属性。大多数时候ViewA需要VIewModelA(用于CRUD)和ViewModelB.List(用于只读目的)。
这里推荐的方法是什么?
- 将ViewModelB注入ViewModelA并公开EntityBList属性
- 是否从ViewModelB在ViewModelA中添加/复制相同的GetList过程
- 在ViewA中,xaml同时引用ViewModelA和viewModelB
我通常使用选项1。将SharedViewModel单例注入到需要数据的视图模型中效果良好。在需要时添加额外的共享数据也很容易。
1)对此不确定。
2) 如果您正在复制代码,通常有更好的解决方案。
您可以使用singleton模式,并有一个类来存放您的Collections。然后,每个Viewmodel都在访问相同的列表。称之为DataAccessor或类似的东西。
3) 我不会有一个视图引用两个不同的视图模型。为什么不合并Viewmodel A和B呢?如果他们都与ViewA打交道,为什么他们目前是分开的?