1

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

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

对于每个工具窗口:

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

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

  3. 重用 View 和 ViewModel 以最小化内存使用。重置 ViewModel 并加载另一组数据可能很难做到。

4

2 回答 2

0

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

于 2012-09-05T18:27:08.403 回答
0

我最终重用View但不是ViewModel即选项2。

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

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

于 2012-10-01T18:37:47.577 回答