代码之家  ›  专栏  ›  技术社区  ›  David

MVP连接Triad

mvp
  •  0
  • David  · 技术社区  · 15 年前

    我有一个带左右窗格的主窗体。左窗格显示客户列表,我有一个用户单击以显示订单的按钮。当用户单击此按钮时,我希望在右窗格中显示下面描述的订单详细信息视图。

    我有一个订单详细信息窗体,它将显示在主窗体的右窗格中,并显示所选客户的所有订单。

    我为两个视图都定义了视图接口,并且每个视图都有一个演示者。

    我希望订单详细信息能够保留所选客户,以便它能够获取该客户的订单。

    我该怎么办?事件聚合器?复合演示者?

    1 回复  |  直到 12 年前
        1
  •  1
  •   Jeremy Wiebe Tomas Reimers    12 年前

    每个窗格不是单独的视图。通过这样做,您将把表单的细节与演示者联系起来。基本思想是,当您编辑客户列表时,演示者不应该关心表单的设置方式。

    您的双窗格视图应该从演示者中提取客户列表,并使用该列表填充左窗格。然后,当单击某个项目时,它会向演示者询问客户的订单列表和其他详细信息。

    这种方法将解决您的问题,因为现在只有一个视图。当您单击订单上的某个内容,它需要了解当前客户时,您可以参考树视图(或组合框或列表视图等)来查看当前选择的客户。

    避免此类问题的技巧是问问自己,如果我创建一个使用完全不同的UI元素的新表单,会发生什么。演讲者必须进行修改以反映这一点吗?如果演示者这样做了,那么您已经将它与视图的实现联系得太紧密了。