如何通过IDataErrorInfo按下保存按钮验证我的实体?

时间:2012-02-23 12:51:19

标签: c# silverlight idataerrorinfo

我已经实现了IDataErrorInfo接口来验证我的实体。

<TextBox Text="{Binding User.Name, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" />

它工作正常,但我想在用户按下保存按钮时重新验证数据。他们是否存在在IDataErrorInfo中实现此功能的任何方式。

2 个答案:

答案 0 :(得分:3)

也许您应该考虑使用INotifyDataErrorInfo接口

这应该给你更多的控制权......包括一个GetErrors方法以及你可以在按钮点击命令上执行的更多(我假设你使用的是MVVM)

在这里找到信息:

http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifydataerrorinfo(v=vs.95).aspx

和一篇好的博客文章:

http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/11/18/silverlight-4-rough-notes-binding-with-inotifydataerrorinfo.aspx

答案 1 :(得分:2)

IDataInfo需要实现两件事

  1. 索引器属性
  2. 错误属性为null或string.Empty,每次都可以。否则是错误描述。
  3. 如果要在保存之前手动验证实体,只需检查.Error属性,并仅在.Error为null或为空时执行保存。我不知道EF可以自动使用IDataErrorInfo的方式。但是,当您的UI以正确的方式实现时,用户不应该选择保存数据,直到一切正常。您可以使用命令的CanExecuteChanged属性来实现它(仅当.Error为null或为空时才使其为true。)