0

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

4

1 回答 1

1

加载比您需要的更多的数据绝对是一个问题,尤其是当您通过 Internet 进行时。为什么会这样?为什么不简单地将视图模型分成两部分?VM 的定义基本上是这样说的:(引自Model-View-ViewModel (MVVM) Explained

视图模型是三元组的关键部分,因为它引入了表示分离,或将视图的细微差别与模型分开的概念。模型没有让模型知道用户对日期的看法,从而将日期转换为显示格式,而是模型只保存数据,视图只保存格式化的日期,控制器充当两者之间的联络人.

如果你分离了视图,你也可以分离虚拟机以保持简单。

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

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

于 2012-09-14T19:50:06.077 回答