我应该在M-V-VM的模型中使用ObservableCollections

时间:2010-06-14 08:57:54

标签: mvvm silverlight-4.0

我对M-V-VM完全陌生,对Silverlight来说还是新手,只是今天第一次阅读它。作为示例,我正在创建一个包含项列表的模型。我的(Silverlight 4)视图包含一个列表框,我的ViewModel将查看模型以检索列表框将绑定到的集合。

我的问题是这个。我认为使用ObservableCollection来保存列表框绑定的项目会很好。这将是ViewModel中的ObseravleCollection。我是否也应该在模型中使用这种类型的集合,还是应该使用其他集合类型并在模型和视图模型之间进行smoe转换?

2 个答案:

答案 0 :(得分:1)

有3种基本情景(按复杂程度增加的顺序):

  1. 模型只是提供对后端服务的访问,并且根本没有缓存流经它的数据
  2. 模型公开了一个项集合,vms没有自己的集合,然后视图只是绑定到模型对象中的集合
  3. 模型公开数据源,vms有自己的集合作为此数据源的窗口,视图绑定到vms中的集合。
  4. 在第一种情况下,您使用List只是将请求的数据传递给vms,在其他情况下,您将使用ObservableCollection,以便通过绑定(情况#2)正确更新任一视图,或者vms可以正确地更新它自己的集合(案例#3)

答案 1 :(得分:-2)

通常的做法是在模型中使用IList / List或类似的东西,然后在ViewModel中进行转换。因此,在模型中,您将拥有类似IList的内容,并在ViewModel中将其转换为ObservableCollection(通常在ViewModel的构造函数中)。

干杯,亚历克斯