如何选择要在特定视图中加载的特定视图模型数据

时间:2012-09-14 18:52:01

标签: windows-phone-7 mvvm

我不确定我是否清楚地陈述了我的问题,但我有两个单独的页面和一个单一的视图模型。最初我只有一个页面,但我决定将它们分开,因为我的页面变得太大(更具体地说,我在一个页面上有太多的透视项目,其中两个页面将更好地为用户分离数据)。我想知道是否有可能只从视图模型中将特定数据加载到单个视图,因为现在我的应用程序正在冻结,因为我的视图模型尝试加载所有数据,即使只有大约一半需要用于用户正在查看的当前页面。如果是这样,我假设我会以某种方式让视图模型知道要加载哪些数据。我怎么做到这一点。或者,最好是创建两个单独的视图模型,每个页面一个,这样只有每个页面的必要数据才会相应加载并使我的应用程序不被冻结?我不确定这里的标准是什么,或者CPU使用率和响应时间最有效率等等。

1 个答案:

答案 0 :(得分:1)

加载超出您需要的数据绝对是个问题,尤其是如果您是通过互联网进行的。为什么这样?为什么不简单地将viewmodel分成两部分? VM的定义基本上是:(引自Model-View-ViewModel (MVVM) Explained

  

viewmodel是三元组的关键部分,因为它引入了Presentation Separation,或者将视图的细微差别与模型分开的概念。而不是使模型知​​道用户的日期视图,以便将日期转换为显示格式,模型只是保存数据,视图只保存格式化日期,控制器充当两者之间的联络人

如果您将视图分开,您也可以将VM分开,以便简化操作。

但是,如果这不能为您做到,并且您的数据不会作为某种服务公开,为什么不仅仅使用VM的部分?根据您所看到的页面仅调用您需要的方法,仅设置您需要的属性,不要全部执行。如果要处理的数据非常大,请在不同的线程上执行此操作,以便您的UI不会冻结(当然,同时向用户显示您使用进度条获取数据)。

对于您描述的情景,这应该足够了。

相关问题