【问题标题】:Reuse or create new View/ViewModel for MDI tool windows为 MDI 工具窗口重用或创建新的 View/ViewModel
【发布时间】:2012-10-02 02:37:47
【问题描述】:

在带有单例工具窗口的 MVVM MDI 应用程序中(想想 Visual Studio),工具窗口内容会根据当前选定的文档而变化。现在有 5 个工具窗口,以后还会有更多。

我可以为每个文档的每个工具窗口重用或创建新的视图和/或视图模型。我的问题是是否有压倒性的理由选择或排除这些选项之一?还有其他我完全错过的选择吗?

对于每个工具窗口:

  1. 为每个文档创建一个新的 View+ViewModel。当用户切换文档时,工具窗口切换 View+ViewModel。使用此选项的内存成本较高,但性能很好。

  2. 为每个文档创建一个 ViewModel,但重用 View。使用 MVVM 模式这是可行的,但 UI 重新布局可能会很昂贵。

  3. 重用 View 和 ViewModel 以最大限度地减少内存使用。重置 ViewModel 并加载另一组数据可能很难做到。

【问题讨论】:

    标签: wpf mvvm mdi


    【解决方案1】:

    始终选择 1,这可以提供更好的性能,如您所说,并为您在开发时创建一个很好的关注点分离。由于视图模型保持打开状态,您可以使用它们做更多事情(例如显示打开文档的列表等)。

    【讨论】:

      【解决方案2】:

      我最终重用了View,但没有重用ViewModel,即选项2。

      要回答最初的问题,应将选项 3 排除在考虑之外。重用虚拟机是没有意义的——如果可以重用之前的虚拟机,它也可以被丢弃,并且以非常可忽略的内存/性能成本为新数据创建新虚拟机要容易得多。

      选项 1 与 2 取决于渲染复杂性、性能目标和内存配额。在大多数情况下,在同一 UI 上切换数据的性能损失应该是可以接受的。如果渲染真的需要我需要保存视图的时间,那么可能有问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多