【问题标题】:MVVM: One ViewModel structure for all Views vs. separate ViewModel structure per View?MVVM:所有视图的一个视图模型结构与每个视图单独的视图模型结构?
【发布时间】:2010-10-13 21:17:00
【问题描述】:

我是 MVVM 新手,需要一些帮助。

我的应用程序由许多不同的窗口组成,这些窗口显示控件,允许用户编辑业务层中的数据。

目前,每次用户打开其中一个窗口的新实例时,都会从头开始创建一个 ViewModel 结构 - 反映业务层的类和集合,并将数据绑定到窗口上的视图,并进行配置访问业务层的适当部分。

目前这很慢,我怀疑这是因为应用程序必须等到每次打开窗口时创建和配置所有新的 ViewModel。我还注意到 RAM 也很快被吃光了。

在应用程序启动时创建一个单一的 ViewModel 结构,然后所有窗口和控件都引用这个单一实例会更好吗? MVVM 的约定是什么?

【问题讨论】:

    标签: wpf mvvm viewmodel


    【解决方案1】:

    每个视图一个 ViewModel 是相当标准的。您不想共享 ViewModel 的实例,因为它们(通常)是有状态的。

    在得出结论是 ViewModel 的创建导致它之前,我会更深入地研究这种迟缓。使用工具分析应用程序,设置一些秒表,或调试应用程序并查看瓶颈是什么。

    【讨论】:

    • 我用秒表查看了这个,VM 创建代码只需要 100 毫秒即可完成,但 Window.Show() 方法需要 >1000 毫秒。所以现在我将坚持使用按需 VM,并研究为什么窗口及其控件需要一段时间才能显示..
    【解决方案2】:

    每次访问视图时都需要重新创建视图模型吗?

    如果不是,您似乎使用视图优先方法,也许您应该使用视图模型定位器?

    您还可以查看 viewmodel first 方法,也许这更适合您的应用程序。

    【讨论】:

      猜你喜欢
      • 2019-10-03
      • 1970-01-01
      • 2014-10-24
      • 2012-03-13
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 2010-12-07
      相关资源
      最近更新 更多