绑定带有错误的验证更新视图
本文关键字:更新 新视图 验证 有错误 绑定 | 更新日期: 2023-09-27 18:12:56
从我的阅读和尝试理解和实现MVVM和验证,我需要一些帮助在以下场景。
视图-用户界面(预期)
模型-基于数据表,并通过OnColumnChanging,逐列测试验证需求(这部分工作没有问题)
ViewModel - glue连接模型和视图,这也可以。
对于每个文本框控件,我分别将它们双向绑定到数据表,当前行(仍然没有问题),并按预期显示数据。标志包括:notifyontargetupupdated, ValidatesOnDataErrors, ValidatesOnExceptions和NotifyOnValidationError都设置为true。
如果我使用接口并输入无效值,它会正确触发验证,并在控件周围放置红色边框,显示失败。
现在问题来了。我启动我的表单,点击"添加"按钮(新记录,空白值),文本框控件现在可以编辑内容。点击"保存"按钮。我想有所有的控件刷新,是缺少"必需"的数据。因为我的视图模型绑定到数据表的列,从我的阅读,所有的验证应该在视图模型中处理,我应该如何调整我的场景。
我不知道如何强制哪些控件绑定到各自的控件,当他们从来没有收到焦点。此外,从其他阅读来看,为了允许单元测试,您应该能够在没有用户界面的假设下进行测试。因此,从理论上讲,我可以自动创建我的视图模型,它加载我的数据模型,添加记录,尝试保存并强制测试所有"必需"字段。
我接近了吗??路要走?不太肯定。
实施:IDataErrorInfo
并检查Error
在SaveCommand
深入阅读:
- 使用模型-视图-视图模型设计模式的WPF应用
- 使用IDataErrorInfo在Silverlight和WPF的MVVM中进行验证
-
验证应该在两个地方完成。一个在
ModelView
(用户输入验证),第二个在Model
模型一致性验证,如果特定场景需要的话。 -
你有每个文本框(
TextProperty
)被绑定到ModelView的属性。TextBox
(我认为)有一个依赖属性,可以让你指定是否在UI
上发出错误信号。
你要做的,IMHO,立即在Add
事件处理程序设置默认值绑定ModelView
对象。将发生的情况是:对于每个控件,包括所需的控件,将通过DataBinding
在UI
上进行设置,默认值。对于必填字段,默认值可能只是无效值,因此必填字段将立即显示Error
信号,向用户发送有关必填字段存在的信号。