c# - 使用 MVP 模式时应该在哪里创建 ListViewItem 列表?

标签 c# winforms design-patterns

我有一个使用 MVP 模式编写的小应用程序,如下所示:

  • 我创建了一个名为 IView 的界面
  • 我在表单中实现了这个接口(interface)
  • 将表单实例作为 IView 类型传递给演示者的构造函数

表单包含一个 ListView 组件。填充 ListView 的项目是在演示者中创建的。我听说在 Presenter 中使用 UI 组件类不是一个好主意。我应该如何以及在哪里创建这些 ListViewItems?我可以在表单本身中创建 ListViewItems,但表单不需要尽可能轻量且没有逻辑吗?

编辑:注意这是一个 Windows 窗体应用程序

最佳答案

I could create the ListViewItems in the form itself but doesn't the form need to be as lightweight as possible with no logic in it?

一个简单的循环,简单的对象创建并不困难。这样的代码对于 View 来说是相当轻量级的:

class SomeView 
{
  void SetData(IEnumerable<DataItem> dataItems) 
  {
    foreach(DataItem dataItem in dataItems) 
    {
      ListViewItem lvi = new ListViewItem();
      lvi.Text = dataItem.Text;
      ...
    }
  }
}

此外,您还可以使用 Binding(正如其他人所建议的)。这将进一步简化 SetData。

尽量让 View 代码保持简单,以便您可以通过快速代码审查来“验证”它 :-)

关于c# - 使用 MVP 模式时应该在哪里创建 ListViewItem 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/619038/

相关文章:

c# - 为什么我没有得到额外的消息框?

java - 设计一个具有延迟加载特性的 Java POJO

c# - 如何在不丢失原始颜色轨迹的情况下使背景颜色动画为新颜色并返回?

c# - 在 Linq 中不符合条件

c# - 卡住用户界面 c# winforms

c# - 将 RichTextBox.Text 数据绑定(bind)到字符串

android - 是否有任何关于移动应用程序中文本大写的指南?

design-patterns - 最佳实践 : initialize same component in multiple classes

c# - 在 FlowDocument 中选择 WPF UIElement

c# - 在标签中显示 ListView 行