我们何时应该从另一个ViewModel引用ViewModel

时间:2012-04-02 17:15:04

标签: mvvm mvvm-light

在许多ViewModel中,我需要来自另一个ViewModel的集合。基本上每个VIewModel都有一个List属性,类型为ObservableCollection。并且大多数时候ViewA需要VIewModelA(用于CRUD)和ViewModelB.List(用于只读目的)。

这里推荐的方法是什么?

  1. 将ViewModelB注入ViewModelA并公开EntityBList属性
  2. 从ViewModelB中添加/复制ViewModelA中的相同GetList过程?
  3. ViewA xaml中的
  4. 引用ViewModelA和viewModelB

2 个答案:

答案 0 :(得分:0)

1)对此不确定。

2)如果您要复制代码,通常会有更好的解决方案。

你可以使用单例模式,并有一个类来保存你的集合。然后每个Viewmodel访问相同的列表。称之为DataAccessor或类似的东西。

3)我没有视图引用两个不同的Viewmodel。为什么不合并Viewmodel A和B?如果它们都与ViewA打交道,为什么它们目前是分开的?

答案 1 :(得分:0)

我通常使用选项1.将SharedViewModel单例注入到需要数据的视图模型中。在需要时也可以轻松添加其他共享数据。