Datagrid通过服务编辑模式和数据验证

时间:2011-11-04 15:11:29

标签: silverlight silverlight-4.0

我得到一个datagrid(dg),它与一个可观察的POCO [Name(string), value(int), isReady(bool)]

集合绑定

我需要让名称可编辑,以便DataGrid <data:DataGridTemplateColumn.CellEditingTemplate>包含TextBox

提交编辑时,我需要调用WCF服务来验证名称。这就是我在CellEditEnded中所做的事情。

但是当名称无效时,我该怎么做:

  1. 在数据网格上显示错误(使用ValidatesOnNotifyDataErrors搜索解决方案但无法成功)
  2. 将单元格重新置于编辑模式。
  3. 这就是我无法在POCO中验证的原因:

    1. DataGrid处于编辑模式
    2. 通过双击单元格,包含数据的标签变为TextBox。我现在处于编辑模式
    3. 我插入了一个错误。 assynchronous validation已启动。 DataGrid返回显示模式
    4. assync已完成,我提出错误,但没有任何反应(视觉上我的意思),因为ValidatesOnNotifyDataError似乎无法在标签上工作。
    5. 而且,我知道有一个错误,如果我回到编辑模式,我得到一个非常奇怪的显示,告诉有1个错误,当进入这个状态时,我无法退出编辑模式,无论如何我做......

      THX

1 个答案:

答案 0 :(得分:0)

(抱歉我的英文不好) 我建议您不要使用网格事件来验证您的数据 - 在您的POCO属性设置器上执行此操作 - 它更干净,更容易保留,如果您将此POCO与另一个控件一起使用,您的验证仍然有效。

由于您需要访问服务来验证值,您最好的办法是实现INotifyDataErrorInfo接口,允许您进行异步验证,请查看此处:http://weblogs.asp.net/fredriknormen/archive/2009/11/22/silverlight-4-and-asynchronous-validation-with-inotifydataerrorinfo.aspxhttp://www.silverlight.net/learn/data-networking/validation/asynchronous-data-validation