【问题标题】:How can I locate a field in a Silverlight 3 DataGrid?如何在 Silverlight 3 DataGrid 中定位字段?
【发布时间】:2011-01-03 21:16:50
【问题描述】:

我需要在 Silverlight 3 DataGrid 中找到一个单元格/列,以便可以对其调用 UpdateSource。我该怎么做?

这就是为什么,如果您有兴趣:

我在 Silverlight 3 应用程序中有一个 DataGrid,它显示装饰有 DataAnnotations 属性(例如 [Required])的对象,用于验证目的。我正在从导入的 CSV 文件填充 DataGrid。导入的行将无效,因为 CSV 不包含所有必填字段。

如果用户编辑数据网格中的字段或当我调用提交(它是 WCF RIA 服务应用程序)时,验证有效。一旦加载数据网格,我想做的就是触发验证。从大量阅读来看,似乎没有内置的方法可以做到这一点。

我想如果我可以在数据网格的第一行中找到该字段并调用 UpdateSource(),我将触发验证错误。如何导航到手动定义的数据网格?

【问题讨论】:

    标签: silverlight validation silverlight-3.0 datagrid


    【解决方案1】:

    DataGridFieldName.Items 使您可以访问绑定到 DataGrid 的对象。 您可以通过手动调用 Validator.ValidateObject 来触发对此项的验证。

    var firstRowOfDataGrid = dataGrid.Items[0];
    ValidationContext validationContext = new ValidationContext(firstRowOfDataGrid, null, null);
    Validator.ValidateObject(this, validationContext);

    我不知道这是否能解决你的情况,但值得一试。

    MSDN 上的验证器
    http://msdn.microsoft.com/en-us/library/dd382100(VS.100).aspx

    【讨论】:

    • 什么是 DataGridFieldName?我在 MSDN 上找不到。
    【解决方案2】:
    【解决方案3】:

    您是否尝试过使用 FindName("Name")

    http://msdn.microsoft.com/en-us/library/bb979952%28VS.95%29.aspx

    【讨论】:

    • 不,这行不通。我已经针对 DataGrid 和特定的 Row 尝试过,但在这两种情况下它都返回 null。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 2010-11-09
    • 2010-10-12
    相关资源
    最近更新 更多