【问题标题】:Pattern to design generic Add,Edit,List screen设计通用添加、编辑、列表屏幕的模式
【发布时间】:2015-08-06 07:08:47
【问题描述】:

我正在使用 Prism、MVVM、automapper 等为 WPF 中的 LOV 制作通用主屏幕,用于添加、编辑、显示、列表等基本操作。

屏幕分为三种类型: 1) 列出所有不可编辑的数据。 2) 添加、编辑、删除、显示。 3)列出所有可编辑的数据(1 + 2的组合)。 这三种方法都有不同的屏幕

目前我设计了 3 个视图模型: 1) 列表视图模型 2) 编辑视图模型 3) 列表编辑视图模型 我观察到第三个是第一个和第二个的组合。

开发这类屏幕的正确方法是什么?

【问题讨论】:

  • 请提供您宝贵的意见...

标签: c# wpf mvvm prism


【解决方案1】:

我认为,最好创建 2 个不同的视图模型(您可以为其命名):

  1. 编辑视图模型
  2. ListEditViewModel

并在第二个视图模型中创建属性,如IsEditable(或IsReadOnly)并使用此属性绑定编辑 UI 控件的访问权限。这是一般的方式。 在复杂的原因中,您可以使用一些由 bool 属性设置的访问角色的状态枚举,例如:

  • 禁止
  • 只读
  • 可以编辑
  • 可以删除

【讨论】:

  • 您可以从单个视图模型中执行此操作,并且您不需要任何标志来指示可编辑性。只需为所需的每个特定状态或布局提供不同的视图(或项目模板)。
  • 当然可以,但是为什么我需要为 2 个相似的视图创建 2 个文件。我认为对于简单的视图,最好为 DataGrid 的“IsReadOnly”属性创建绑定(例如,如果它是一些列表视图)然后复制 2 的 xaml 代码,或者可能在未来 3 个类似的视图中。问题是关于视图模型,而不是关于视图。因此,最好为“列表”和“非列表”模型创建一个视图模型。
  • 第一个参数 - 为 2 个不同的视图创建两个不同的文件 - 与您所说的视图模型相同 - 为每个状态创建不同的 VM。所需的可编辑性可以完全由您选择的视图来控制。如果您不想要多个视图,请考虑使用可根据显示内容进行操作的数据模板。
  • 我想,你没有正确理解我。好的,看看这个问题 - 我们在作者描述的视图模型中有 3 种类型。我说这是基于其中的模型创建 2 种视图模型的好方法:1)单个实体的视图模型 2)一组实体的视图模型。这就是视图模型。然后我们需要根据访问规则组织用户访问(有 2 个访问规则有问题 - 只读/可编辑)。您可以使用不同的模板或视图来组织它,我喜欢使用绑定和访问属性的另一种方法。哪种方法更好取决于应用程序 UI 设计。
  • 我完全理解你在说什么。无论您有一个实体还是多个实体,您都只需要一个 VM - VM 应该有一个 IList 以便它处理这两种情况。然后,您将拥有一个只读视图和一个可编辑视图。这两个视图可以是一个,您可以使用适当的构造函数来实例化它,具体取决于您希望它显示的内容。使用 VM 发出信号表明它处于编辑模式会散发出代码异味并将 UI 相关信息移动到 VM 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
相关资源
最近更新 更多