【问题标题】:Validating new rows in Silverlight DataGrid验证 Silverlight DataGrid 中的新行
【发布时间】:2011-04-21 15:54:20
【问题描述】:

我们正在使用 RIA 服务/Silverlight 4,并且我正在将数据网格绑定到 Context.Foo 之类的东西。

当用户尝试在必填字段中输入空字符串等时,我可以看到数据网格的验证摘要中出现验证错误,生活是美好的。

但是,当我通过在 viewModel 中调用 Context.Foo.Add(new Foo) 之类的方法添加新项目时,新行会出现在数据网格中,但除非用户单击单元格,否则永远不会验证。

有没有办法让 DataGrid 验证所有项目?

【问题讨论】:

    标签: silverlight validation datagrid service ria


    【解决方案1】:

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

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

    这个应该实现你所追求的(我强调应该,只是因为我在写这个之前没有在一个例子中自己检查过)。

    希望这会有所帮助...

    克里斯

    【讨论】:

    • 是的。感谢克里斯,我正在使用这样的代码。问题在于,在用户单击其中一个单元格之前,似乎没有任何方法可以告诉 DataGrid 该对象存在验证错误。我可以手动添加项目,但代码并不是真正可维护的。遗憾的是数据网格上没有 UpdateValidation() 方法来循环并检查对象。谢谢
    • 我也遇到了同样的问题,你想出一个可以接受的解决方案了吗? - 验证确实需要在添加行后立即触发
    猜你喜欢
    • 2011-07-02
    • 2011-09-29
    • 2011-04-12
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    相关资源
    最近更新 更多