在视图之间进行通信

时间:2012-04-25 17:15:32

标签: c# .net winforms mvp

我在尝试理解这种模式时遇到了很多麻烦。 在工作中,我们正在使用被动视图实现MVP。我们正在使用WinForms。

  • 所以我们有一个View(这是一个windows窗体),它实现了一个接口并有一个演示者。
  • 演示者获取视图的接口实例 实现,并管理视图抛出接口。
  • 演示者可以看到模型和经理。
  • 管理器处理多个模型的数据库持久性,但它不会手动添加它们,它使用一个单独的层,称为Data,因此它告诉该层要保留数据
  • 然后,数据层使用Entity Framework
  • 将数据持久保存到数据库

假设我们有一个Clients的视图,它重现了一个模型客户端,我们在我们的数据库中有一个名为Clients的表。 客户可以拥有名称和城市。

我们还有一个城市视图,这是一个简单的添加,编辑和删除,它还​​代表一个模型城市和一个表城市。

现在,在我们的客户视图中,我们希望让用户添加一个新城市,因此在视图中,我们打开另一个视图,城市视图,然后用户创建一个新城市。

在“客户”视图中,我想查看用户添加的城市,这怎么可能?视图会返回一些东西吗?

(我希望将它放在内存中,在添加城市时不会将任何内容保留到数据库中,我只想要城市的模型)

我认为从视图中返回模型并查看模型不是MVP。那怎么办呢?

1 个答案:

答案 0 :(得分:0)

打开另一个视图非常合理,但我个人不赞成返回调用者使用的值的视图。如果需要其他观点来访问这个新城市会怎么样?

请在此处查看我的回答:MVP Communication between presenters?了解使用pub / sub实现目标的示例。