【发布时间】:2011-06-30 15:43:21
【问题描述】:
我有一个基于 MVVM/WPF 的应用程序,它可以同时打开多个工作区(基本上包含一个 TreeView),这些工作区在同一数据树上显示和操作。我需要能够独立展开和折叠并选择每个工作区中的项目,并且我希望能够在两个工作区之间拖放项目(例如,用于移动或复制项目)。我还需要数据虚拟化,因为只有在第一次展开树项时才加载数据(在两个视图中)。还有一个工作区范围的详细信息视图,显示当前具有焦点的工作区的选定项目的详细信息。工作区特定的扩展和项目选择也必须以编程方式工作。
您能否为包含这些功能的基于 MVVM 的应用程序设计一个 ruff 设计?我应该为每个工作区创建一个单独的 ViewModel 树并实现一个 Model-ViewModel 映射器吗?或者我应该只有一个带有两个视图的 ViewModel 树?详细信息视图如何知道当前选择了什么以及哪个工作区具有焦点? ...
所以改写我的问题:每个视图中显示的模型实例实际上是相同的实例。但是 ViewModel 也应该相同吗?或者更好:我能侥幸逃脱吗?
另外:有没有我可以研究的具有大部分这些功能的开源应用程序? Prism 或任何其他基于 MVVM 的框架可以为我完成大部分工作吗?
【问题讨论】:
标签: wpf architecture mvvm software-design