我正在重构一个使用TabControl包含UserControl的WinForms(.NET 4)应用程序——每个TabPage中都使用UserControl实例,最终结果是在每个选项卡中编辑器。这些编辑器用于编辑一组项目,最终将这些项目提供给整个表单所编辑的对象。
例如类结构如下:
class School
string Name
string Address
- 一组
Course
,每个具有几个适当的字段(Department
、Name
等)
(它实际上不是与学校相关的应用程序,但这个比喻可行。)
从视觉上看,一组UserControl管理Course
,而父表单处理School
信息。
目前,我为Form/School和UserControl/Course分别拥有一个Presenter,每个都有相应的视图。然而,School的Presenter需要控制Course的一些信息。例如,为一个Course选择的选项会限制其他Course的选项。 School
模型正在处理计算,但它需要传递到Course的Presenter。
我并没有找到很多MVP讨论中这种关系的示例,而这是我第一次采用MVP方法。处理这种情况的好选择是什么?是否适合让School的Presenter拥有一组Course的Presenter表示该组?应该让School的View持有一组Courses的View吗?(最终UserControl必须以某种方式和某个地方连接到表单上,对吧?)
我的主要目标是(不足为奇地)增加可测试性和可维护性,到目前为止,在这个过程中的主要参考资料是Michael Feathers的"The Humble Dialog Box" 和Jeremy Miller的"Build You Own CAB"系列。