我正在尝试在C#/ WPF/Entity Framework 4.0应用程序中实现优雅的表单验证.我有一个经典的表单(一些文本框和复选框)和一个保存按钮.
我只想在用户按下save时更新源(和数据库),我也只想在用户按下save时运行表单验证.
我用参数设置了所有绑定UpdateSourceTrigger=Explicit.我还将所有绑定放在一个BindingGroup.
当用户按下save时,触发UpdateSources绑定组的方法 - 这会触发UpdateSource每个绑定.此时(源更新完成之前)我希望进行表单验证,并在GUI中突出显示错误.如果没有输入错误,则更新应该可以自由进行.
我以为我可以通过执行实现这一目标IDataErrorInfo的EntityObject绑定到田间地头,并设置参数ValidatesOnDataErrors=True在我的所有绑定.
不幸的是这并没有工作,因为这里解释: MSDN数据绑定概述-数据验证 标题为"验证流程"下
5)绑定引擎设置source属性.
6)......这是检查将ValidatesOnDataErrors设置为true的绑定的点.
这对我来说似乎真的很愚蠢 - 为什么要在数据已经"提交"到对象之后验证数据?我一直在寻找一种方法来获得我想要的行为......有人曾经做过这样的事吗?
所以主要的问题是:
如何在更新源之前验证输入并在验证失败时取消更新?