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

Windows phone 7 如何选择要在特定视图中加载的特定视图模型数据,windows-phone-7,mvvm,Windows Phone 7,Mvvm,我不确定我是否清楚地陈述了我的问题,但我有两个独立的页面和一个视图模型。最初我只有一个页面,但我决定拆分这些页面,因为我的页面变得太大了(更具体地说,我在一个页面上有太多的透视项,其中两个页面可以更好地为用户分隔数据)。我想知道是否可以只从视图模型将特定数据加载到单个视图中,因为现在我的应用程序处于冻结状态,因为我的视图模型尝试加载所有数据,即使用户正在查看的当前页面上只需要使用大约一半的数据。如果是这样,我假设我需要让视图模型知道要加载哪些数据。我将如何做到这一点。或者,创建两个独立的视图模型

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

加载超过您需要的数据肯定是一个问题,特别是如果您是通过Internet进行加载的话。为什么会这样?为什么不简单地将viewmodel分为两部分?VM的定义基本上是这样的:(引自)

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

如果您分离了视图,那么为了保持简单,您也可以分离VM

尽管如此,如果这对您不起作用,并且您的数据没有作为某种服务公开,那么为什么不只使用VM的部分呢?根据您看到的页面,只调用您需要的方法,只设置您需要的属性,不要全部执行。如果需要处理的数据非常大,那么可以在另一个线程上执行此操作,这样您的UI就不会冻结(当然,同时向用户显示您正在使用进度条获取数据)


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

是的,这正是我想做的。谢谢你的回复。事实上,我也在从互联网加载数据,所以我相信我会分离我的虚拟机,看看它是如何工作的……它工作了,只是想回应一下!顺便说一句,我喜欢你在WP7 windows phone 8上的博客,与你一起工作应该会非常激动人心!