代码之家  ›  专栏  ›  技术社区  ›  Sorskoot

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

  •  0
  • Sorskoot  · 技术社区  · 16 年前

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

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

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

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

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


    这是一个后续行动 Where to put the calls to WCF or other webservices in MVVM?

    2 回复  |  直到 9 年前
        1
  •  5
  •   Anderson Imes    16 年前

    一般来说,如果我需要保持模型对象的周围(我认为大多数东西从WCF服务返回模型对象),我会把它存储在我的VIEW模型中的“模型”属性中。

    我看到人们甚至在他们的基本ViewModel类型上创建标准模型属性,如下所示(我不这样做,但很好):

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

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

        2
  •  2
  •   PL.    16 年前

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