从我的阅读并尝试理解和实现MVVM和验证,我需要一些关于以下场景的帮助。
查看 - 用户界面(预期)
模型 - 基于数据表,并通过OnColumnChanging,逐列测试验证要求(这部分没有问题)
ViewModel - 粘合将模型连接到视图,这也适用。
对于每个文本框控件,我将它们分别绑定到数据表的双向,当前行(仍然没有问题)并且它按预期显示数据。标志包括:NotifyOnTargetUpdated,ValidatesOnDataErrors,ValidatesOnExceptions和NotifyOnValidationError都设置为true。
如果我使用界面并输入无效值,它会正确触发验证,并在控件旁边显示红色边框,表示失败。
现在问题。我启动表单,然后单击“添加”按钮(新记录,空白值),现在启用文本框控件以编辑内容。单击“保存”按钮。我希望刷新所有缺少“必需”数据的控件。由于我的视图模型绑定到数据表的列,并且从我的读数中绑定,所有验证都应该在viewmodel中处理,我应该如何调整我的场景。
我不知道当他们从未获得焦点时,如何强制将哪些控件绑定到相应的控件。此外,从其他读数来看,为了进行单元测试,您应该能够在假设从不存在用户界面的情况下进行测试。因此,理论上,我可以自动创建我的viewmodel,它加载我的数据模型,添加记录,尝试保存并强制测试所有“必需”字段。
我关闭了吗?关掉???对此并不是很积极。
答案 0 :(得分:1)
答案 1 :(得分:0)
验证应该在两个地方完成。一个在ModelView
(用户输入验证),第二个在Model
模型一致性验证,如果特定场景需要。
您将每个文本框(TextProperty
)绑定到ModelView的属性。 TextBox
(我推测)有一个依赖属性,允许你指定ether来表示UI
上的错误。
你需要做什么,恕我直言,在Add
事件处理程序中立即将默认值设置为绑定ModelView
对象。将会发生的事情是:对于每个控件,包括必需的控件,将通过DataBinding
UI
上的Error
显示,默认值。对于必填字段,默认值可能只是无效字段,因此需要的字段将立即显示{{1}}信号,向用户发出有关必填字段存在的信号。