【问题标题】:MVP pattern with dynamically created UI具有动态创建 UI 的 MVP 模式
【发布时间】:2009-08-22 05:02:55
【问题描述】:

在 winforms 中使用 MVP 模式的前提是演示者了解 IViewInterface 定义的要访问哪些控件。例如,如果您的表单上有 2 个文本框和一个按钮,那么您将为文本框定义一个具有两个属性的 IViewInterface,并且在按钮单击事件时,您将调用转发给 Presenter,并且演示者可以访问这两个属性。很简单。现在想象一下,如果您的 UI 是在运行时基于数据库中的表构建的。假设您的数据库中有 500 个表,并且您想为这 500 个表设计 CRUD 应用程序。假设您在数据库中的某个地方定义了您希望如何在 UI 中布局这 500 个表。您有一个程序在运行时为这 500 个表创建 UI 控件。在这种情况下如何应用 MVP 模式?

【问题讨论】:

  • 不管这意味着什么,我一发布问题就会得到-1。继续前进
  • 我不会在乎声望、积分、mvp等,只要我继续学习,继续努力
  • 互联网很棒。您无需跋涉并拥有 40 年的经验即可获得重要知识。有一种方法可以在短时间内获得这一点。
  • 我完全同意。不评论就投反对票的人是混蛋。
  • codemnky 绝对正确!

标签: mvp design-patterns


【解决方案1】:

许多程序员都尝试过完全动态的用户界面,但没有取得多大成功。我敢肯定很多人可以给你基本的前提,即表格 -> 制作 UI,但除此之外,没有任何事情能真正解决,所以你最好还是自己做。

如果您认为您有不同的方法,您应该尝试一下,看看它是如何工作的。

【讨论】:

    【解决方案2】:

    为此,演示者根本不应该关心控件。

    视图可能会将这些数据作为属性公开。如果这 500 个具有 500 个 UI 布局的表至少都使用像 GridView 这样的标准显示控件,则可以为 GridView 中的活动行公开“CurrentTableName”属性和“CurrentRow”属性之一。演示者可以将它们传递或转换为 DTO 或 DM 对象到业务或服务层。

    不过,在这种情况下,这可能会也可能不会。

    【讨论】:

    • 我也有类似的想法。我在想我的 IView 将只有一个像这样的方法 List GetValuesFromTheFormForTheseControls(List ControlNames) 因为我们有使用表字段作为控件名称的约定,所以我的演示者会在我需要任何值检索器时调用此方法控件数量
    【解决方案3】:

    在 winforms 中使用 MVP 模式是 前提是主持人知道 关于访问哪些控件 由 IViewInterface 定义

    没错,但在动态 GUI 的情况下,您不需要将这些控件单独公开为界面的属性。您可以将通用控件定义为具有一些通用属性的类,并将这些控件的列表公开为视图界面的单个属性。

    这只是一种方法 - 设计取决于确切的场景。但总的来说,我会说动态 GUI 甚至是更好引入 MVP 的候选者,而不是相反。

    【讨论】:

      猜你喜欢
      • 2018-06-28
      • 1970-01-01
      • 2017-08-13
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      相关资源
      最近更新 更多