我们在这里使用MVP设计模式,我们已经采用了persenter-per-UserControl风格。
This answer提出了两种不同风格的演示者构建:
不幸的是,没有提到视图的连接方式和位置。在另一个项目中,我使用工厂模式来创建演示者并使用dependency injection传递视图。视图在视图工厂中创建,该工厂使用适当的UserControl实例化视图,然后使用Controls.Add
将其添加到表单中。
从我从第一个链接收集到的内容,Visual Studio设计器用于添加UserControls - 这很好,但似乎演示者将不必要地耦合到视图层。
那么我该如何添加我的子视图并连接View-Presenter对呢?
答案 0 :(得分:0)
我倾向于这样做的方法是在子视图的“主”视图中放置占位符,我通常使用面板控件。
我总是连接我的MVP,以便Presenter创建视图。从来没有反过来(我讨厌那种风格)然后,演示者会公开一个返回视图的GetView()方法。
然后,主演示者可以创建一个子演示者获取其视图并告诉主视图渲染它。这是通过masterview上的方法完成的,该方法将子视图添加到面板控件的控件集合中。