验证Silverlight DataGrid中的新行

3
我们正在使用RIA服务/Silverlight 4,并将数据网格绑定到类似Context.Foo的内容。当用户尝试在必填字段中输入空字符串等时,我可以看到验证错误出现在数据网格的验证摘要中,这是很好的。
然而,当我通过在viewModel中调用类似Context.Foo.Add(new Foo)来添加新项时,新行会出现在数据网格中,但除非用户单击单元格,否则不会进行验证。
是否有一种方法可以要求DataGrid验证所有项目?
1个回答

0

与其要求DataGrid为您验证行,您需要验证新行绑定的对象本身。您可以使用Validator类来完成此操作。例如,假设您的对象分配给名为newRowObject的变量,您可以执行以下操作:

List<ValidationResult> validationResults = new List<ValidationResult>();
ValidationContext validationContext = new ValidationContext(newRowObject, null, null);
bool isValid = Validator.TryValidateObject(newRowObject, validationContext, validationResults, true);

这应该可以实现您想要的功能(我强调“应该”,只是因为在写这篇文章之前我没有在示例中检查过)。

希望这可以帮到您...

Chris


1
是的。谢谢你,Chris。我正在使用类似的代码。问题在于,似乎没有办法告诉DataGrid这个对象存在验证错误,除非用户点击其中一个单元格。我可以手动添加项目,但代码并不真正可维护。很遗憾DataGrid上没有UpdateValidation()方法来循环检查对象。谢谢。 - Kye
我有同样的问题,你有找到可接受的解决方案吗?验证应该在添加行时立即触发。 - Calanus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接