1

在 GUI 应用程序中,我使用的是带有被动视图的 MVC,如此所述。

这种模式是模型-视图-控制器和模型-视图-展示器的另一种变体。与这些一样,UI 分为处理显示的视图和响应用户手势的控制器。被动视图的显着变化是视图完全被动,不再负责从模型中更新自身。因此,所有的视图逻辑都在控制器中。因此,视图和模型之间的任一方向都没有依赖关系。

到目前为止,我的控制器注册为被动视图本身在初始化时创建的现有静态组件的侦听器。现在,控制器需要根据模型动态创建可变数量的 UI 组件具体来说,现在我说的是复选框网格 - 网格的尺寸是可变的)。

这是我犹豫的地方:

  1. 这个动态 UI 创建代码是否应该在 Controller 中实现?这将导致由于保持视图不知道模型而导致的代码不太复杂,但部分演示文稿将由控制器决定......
  2. View 是否应该提出一种通用的、模型独立的方式来按需创建 UI 组件,让 Controller 使用它并将侦听器注册到检索到的 UI 组件?在这里,控制器必须在模型对象和通用对象(具体来说,字符串,整数,...)之间来回转换。
4

1 回答 1

2

每当视图需要创建动态控件时,它往往是针对某物的集合。这意味着您的 Presenter/Controller 不需要创建所有逻辑,而是在视图上调用将创建控件的方法。

在视图上:

void PopulateUserOptions(IEnumerable<String> options)
{
    foreach (var item in options)
    {
        \\create and add your controls to the form
    }
}

通过这种方式,控制器表达了何时应该创建控件等,但将其留给视图来决定如何做。

于 2012-01-08T00:42:37.387 回答