如何在MVVM模式中验证ViewModel中的数据?

时间:2009-04-23 10:06:03

标签: wpf validation mvvm

我昨天听了this herding code podcast on MVC, MVP, MVVM并且对将整个ViewModel对象发送到验证器的想法感到震惊,验证器除了验证其中的所有字段并将其发回之外什么都不做。

  • 是否有人实施了此类验证模式?
  • 技术上看起来怎么样?

我正在考虑扩展这个想法,还有一个“FormPreparer”,它在模型数据,字段元数据和其他用户和上下文数据被输入之后接收整个ViewModel,然后这个“FormPreparer”准备所有字段在将在视图上的表单上,例如

  • 日期字段由DatePicker控件
  • 表示
  • 电子邮件字段由带有电子邮件验证的textBoxes表示
  • 和客户字段是客户下拉列表

元数据定义了每个字段的这些内容:

  • 类型(文字,日期,日期/时间,持续时间,电子邮件,网址,客户)
  • 控制(文本框,多行文本框,下拉列表,单选按钮,复选框,单击按钮)
  • 标签(例如“名字”)
  • helptext(例如“这是您在表格4A顶部找到的号码”)
  • 示例(“#123ABCD”)
  • 显示标签(例如,包含多个标签区域的表单)
  • 显示区域(例如,用于将字段分组到区域中的表单)
  • 显示顺序(例如,组中字段的顺序)
  • 值(例如“Jim”)
  • autosuggest数据(用户开始输入时需要显示的名称数组)
  • 字段状态(只读,编辑,隐藏)

“FormPreparer”将组合所有这些信息,然后将数据呈现给View:

  • 在适当的控件中显示所有表单数据(日期为datepickers,多行文本框中的描述等)
  • 自动处理所有验证
  • 只显示当前用户可以看到的字段,只允许他编辑允许编辑的数据

是否有人按照这些方针编写了WPF / MVVM应用程序?

1 个答案:

答案 0 :(得分:0)

没有。我正在研究WPF / MVVM项目,但我们还没有采用这种通用的方法进行验证。我们在每个视图模型中创建一个自定义验证方法,并使用特定于每个视图模型的验证逻辑。

可用于所有视图模型的通用验证例程非常棒。