正在验证Silverlight DataGrid中的新行
我们使用的是RIA服务/Silverlight 4,我将datagrid绑定到Context.Foo之类的东西 我可以在datagrid的验证摘要中看到验证错误,当用户尝试在必填字段中输入空字符串时,诸如此类,生活是美好的 但是,当我通过调用viewModel中的Context.Foo.add(new Foo)之类的东西来添加一个新项时,新行会出现在datagrid中,但除非用户单击单元格,否则不会进行验证正在验证Silverlight DataGrid中的新行,silverlight,validation,datagrid,service,ria,Silverlight,Validation,Datagrid,Service,Ria,我们使用的是RIA服务/Silverlight 4,我将datagrid绑定到Context.Foo之类的东西 我可以在datagrid的验证摘要中看到验证错误,当用户尝试在必填字段中输入空字符串时,诸如此类,生活是美好的 但是,当我通过调用viewModel中的Context.Foo.add(new Foo)之类的东西来添加一个新项时,新行会出现在datagrid中,但除非用户单击单元格,否则不会进行验证 有没有办法让DataGrid验证所有项目?您需要验证新行绑定到的对象本身,而不是让Dat
有没有办法让DataGrid验证所有项目?您需要验证新行绑定到的对象本身,而不是让DataGrid验证行。您可以使用Validator类来完成这项工作。例如,假设将对象分配给名为newRowObject的变量,则可以执行以下操作:
List<ValidationResult> validationResults = new List<ValidationResult>();
ValidationContext validationContext = new ValidationContext(newRowObject, null, null);
bool isValid = Validator.TryValidateObject(newRowObject, validationContext, validationResults, true);
List validationResults=new List();
ValidationContext ValidationContext=新的ValidationContext(newRowObject,null,null);
bool isValid=Validator.TryValidateObject(newRowObject,validationContext,validationResults,true);
这应该实现您所追求的目标(我强调应该这样做,因为在我写这篇文章之前,我没有亲自在一个示例中检查它)
希望这有助于
克里斯是的。谢谢你,克里斯,我正在使用这样的代码。问题在于,在用户单击DataGrid的一个单元格之前,似乎没有任何方法可以告诉DataGrid该对象存在验证错误。我可以手动添加项目,但代码实际上不可维护。遗憾的是,datagrid上没有UpdateValidation()方法来循环检查对象。谢谢我也有同样的问题,你有没有提出一个可以接受的解决方案确实需要在添加行后立即触发验证