绑定带有错误的验证更新视图

本文关键字:更新 新视图 验证 有错误 绑定 | 更新日期: 2023-09-27 18:12:56

从我的阅读和尝试理解和实现MVVM和验证,我需要一些帮助在以下场景。

视图-用户界面(预期)

模型-基于数据表,并通过OnColumnChanging,逐列测试验证需求(这部分工作没有问题)

ViewModel - glue连接模型和视图,这也可以。

对于每个文本框控件,我分别将它们双向绑定到数据表,当前行(仍然没有问题),并按预期显示数据。标志包括:notifyontargetupupdated, ValidatesOnDataErrors, ValidatesOnExceptions和NotifyOnValidationError都设置为true。

如果我使用接口并输入无效值,它会正确触发验证,并在控件周围放置红色边框,显示失败。

现在问题来了。我启动我的表单,点击"添加"按钮(新记录,空白值),文本框控件现在可以编辑内容。点击"保存"按钮。我想有所有的控件刷新,是缺少"必需"的数据。因为我的视图模型绑定到数据表的列,从我的阅读,所有的验证应该在视图模型中处理,我应该如何调整我的场景。

我不知道如何强制哪些控件绑定到各自的控件,当他们从来没有收到焦点。此外,从其他阅读来看,为了允许单元测试,您应该能够在没有用户界面的假设下进行测试。因此,从理论上讲,我可以自动创建我的视图模型,它加载我的数据模型,添加记录,尝试保存并强制测试所有"必需"字段。

我接近了吗??路要走?不太肯定。

绑定带有错误的验证更新视图

实施:IDataErrorInfo并检查ErrorSaveCommand

深入阅读:

  • 使用模型-视图-视图模型设计模式的WPF应用
  • 使用IDataErrorInfo在Silverlight和WPF的MVVM中进行验证
  1. 验证应该在两个地方完成。一个在ModelView(用户输入验证),第二个在Model模型一致性验证,如果特定场景需要的话。

  2. 你有每个文本框(TextProperty)被绑定到ModelView的属性。TextBox(我认为)有一个依赖属性,可以让你指定是否在UI上发出错误信号。

你要做的,IMHO,立即在Add事件处理程序设置默认值绑定ModelView对象。将发生的情况是:对于每个控件,包括所需的控件,将通过DataBindingUI上进行设置,默认值。对于必填字段,默认值可能只是无效值,因此必填字段将立即显示Error信号,向用户发送有关必填字段存在的信号。