2012-02-23 35 views
2

我已经实现IDataErrorInfo接口来验证我的实体。如何通过IDataErrorInfo验证按下保存按钮时的实体?

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

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

回答

3

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

这应该给你更多的控制权......包括GetErrors方法和更多,你可以点击按钮命令(我asume您使用的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

2

IDataInfo需要两件事情要实现

  1. 一个索引器属性
  2. 错误属性,该属性为空或时的String.Empty是everyting OK。否则,它是一个错误描述。

如果您希望在保存之前手动验证您的实体,则只需检查.Error属性并仅在.Error为空或空时执行保存。我不知道EF可以自动使用IDataErrorInfo的方式。但是,当您的UI以正确的方式实现时,用户不应选择保存数据,直到一切正常。您可以使用命令的CanExecuteChanged属性来实现此功能(仅当.Error为空或空时才为true)。