我们正在使用 RIA 服务/Silverlight 4,我正在将数据网格绑定(bind)到 Context.Foo 之类的东西。
当用户尝试在必填字段等中输入空字符串时,我可以看到数据网格的验证摘要中出现验证错误,生活很美好。
但是,当我通过在 viewModel 中调用类似 Context.Foo.Add(new Foo) 的方法添加新项目时,新行出现在数据网格中,但除非用户单击单元格,否则永远不会被验证。
有没有办法让 DataGrid 验证所有项目?
最佳答案
您不需要让 DataGrid 为您验证行,而是需要验证新行绑定(bind)到的对象本身。您可以使用 Validator 类为您执行此操作。例如,假设您的对象被分配给一个名为 newRowObject 的变量,您可以执行以下操作:
List<ValidationResult> validationResults = new List<ValidationResult>();
ValidationContext validationContext = new ValidationContext(newRowObject, null, null);
bool isValid = Validator.TryValidateObject(newRowObject, validationContext, validationResults, true);
这应该实现你所追求的(我强调应该,只是因为我在写这篇文章之前没有在示例中亲自检查它)。
希望这有助于...
克里斯
关于silverlight - 验证 Silverlight DataGrid 中的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3869971/