Wcf MVVM中的数据应该存储在哪里?

Wcf MVVM中的数据应该存储在哪里?,wcf,silverlight,architecture,mvvm,prism,Wcf,Silverlight,Architecture,Mvvm,Prism,我有一个使用MVVM的Silverlight Prism应用程序。该模型调用WCF服务并返回数据列表 ViewModel绑定到视图,因此ViewModel应该具有列表属性 我是否应该在MVVM中保留WCF服务返回的数据 List属性是否应该使用其getter调用模型?其中,模型具有ReturnListOfData方法,该方法返回存储在模型中的数据 或者ViewModel在调用服务器后存储数据 这是一个关于的跟踪。一般来说,如果我需要保持模型对象的周围,我认为大多数东西从WCF服务返回模型对象,我

我有一个使用MVVM的Silverlight Prism应用程序。该模型调用WCF服务并返回数据列表

ViewModel绑定到视图,因此ViewModel应该具有列表属性

我是否应该在MVVM中保留WCF服务返回的数据

List属性是否应该使用其getter调用模型?其中,模型具有ReturnListOfData方法,该方法返回存储在模型中的数据

或者ViewModel在调用服务器后存储数据


这是一个关于

的跟踪。一般来说,如果我需要保持模型对象的周围,我认为大多数东西从WCF服务返回模型对象,我将把它存储在模型属性中的VIEW模型中。 我看到人们甚至在他们的基本ViewModel类型上创建标准模型属性,就像这样,我不这样做,但这很好:

public class ViewModel<ModelType> : INotifyPropertyChanged ...
{
     //Model Property
     public ModelType Model
     {
          ...
     }
}

这真的取决于你。让它们尽可能靠近相关的ViewModels可能是这里要做的事情。

这实际上取决于应用程序的其他方面。例如,ReturnListOfData返回的数据是如何使用的?还有其他组件对它感兴趣吗?用户是否更新列表中的元素?它能创建他以后想要保存的新元素吗?等等

在最简单的情况下,您只需要查看viewmodel公开的List属性,然后将该列表重置为返回的任何ReturnListOfData。当用户只是执行搜索,以后不对数据做任何操作,并且只有一个视图对该数据感兴趣时,它可能会起作用

但假设用户希望能够修改该列表的元素。显然,您必须以某种方式跟踪原始列表中的更改,因此当用户单击“保存”或“取消”时,您将只向服务器发送已更改或添加的元素,或者在用户单击“取消”时恢复原始元素。在这种情况下,您需要一个模型对象,该对象将保留原始数据,因此viewmodel只包含其副本