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

时间:2011-10-31 12:32:50

标签: c# wpf validation mvvm

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

查看 - 用户界面(预期)

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

ViewModel - 粘合将模型连接到视图,这也适用。

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

如果我使用界面并输入无效值,它会正确触发验证,并在控件旁边显示红色边框,表示失败。

现在问题。我启动表单,然后单击“添加”按钮(新记录,空白值),现在启用文本框控件以编辑内容。单击“保存”按钮。我希望刷新所有缺少“必需”数据的控件。由于我的视图模型绑定到数据表的列,并且从我的读数中绑定,所有验证都应该在viewmodel中处理,我应该如何调整我的场景。

我不知道当他们从未获得焦点时,如何强制将哪些控件绑定到相应的控件。此外,从其他读数来看,为了进行单元测试,您应该能够在假设从不存在用户界面的情况下进行测试。因此,理论上,我可以自动创建我的viewmodel,它加载我的数据模型,添加记录,尝试保存并强制测试所有“必需”字段。

我关闭了吗?关掉???对此并不是很积极。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

  1. 验证应该在两个地方完成。一个在ModelView(用户输入验证),第二个在Model模型一致性验证,如果特定场景需要。

  2. 您将每个文本框(TextProperty)绑定到ModelView的属性。 TextBox(我推测)有一个依赖属性,允许你指定ether来表示UI上的错误。

  3. 你需要做什么,恕我直言,在Add事件处理程序中立即将默认值设置为绑定ModelView对象。将会发生的事情是:对于每个控件,包括必需的控件,将通过DataBinding UI上的Error显示,默认值。对于必填字段,默认值可能只是无效字段,因此需要的字段将立即显示{{1}}信号,向用户发出有关必填字段存在的信号。