从设计的角度来看,我有一个复杂的GUI,将GUI(Window)切割成ViewModels
,UserControls
和DataTemplates
的建议粒度是多少。假设我有一个窗口显示DataGrid
中的实体列表,然后是ComboBoxes
中的一些过滤器,一些细节......
我应该创建多少ViewModels
? ......以及DataTemplates
和UserControls
。
非常感谢您提供良好的WPF / MVVM设计模式理念。
答案 0 :(得分:3)
虽然你的问题不是很明确,但我会尽力回答。 ViewModels
的数量......取决于您。
我个人的做法是将我的用户界面分成许多不同的自定义UserControls
,每个控件只有一个ViewModel
。它允许我拥有一个水晶般清晰的架构,其中包含许多智能控件,每个控件都设计用于一个任务。例如,对于我的经理应用程序,我有:
- 一个UserControl
旨在列出所有用户
- 另一个旨在创建或编辑用户的
- 还有一个旨在监控用户活动。
将您的应用程序分成不同的任务驱动UserControls
将帮助您:
Bindings
到处飞行。关于DataTemplates
,我通常会将常规模板分成不同的ResourceDictionaries
。
无论如何,没有“正确的方式”也没有“错误的方式”,我认为只有“你的方式”。对我来说,我的代码越精细,它就越容易理解,假设组件不够小,无法使用。应为一个主要目标设计一个单独的组件。一旦你完成了这种分离,MVVM将为你提供很多帮助!
答案 1 :(得分:1)
您的问题有点通用,真正的答案可能取决于您的应用程序。 View-Model是一个视图模型,所以我希望你的每个视图都有一个。
我会从简单的(KISS)开始,并在您的情况下使用单个视图模型和视图,UI控件(DataGrid等...)直接放在您的视图中。
如果可以,从第一天开始使用DataTemplates,它们有助于保持顶级布局,与模型对象的更详细布局分开。
如果/当你到达需要在其他地方重新使用控件/布局/逻辑的点时,那么你可以开始将这个单一视图/视图模型分解为视图组合或子视图或UserControls。您应该通过以类似的方式分解视图模型来镜像此组合。