我正在编写一个Silverlight屏幕,它从文件中获取用户输入,解析文件并在屏幕上显示任何验证错误。永远不会显示文件中的数据,屏幕的目的仅仅是验证反馈。
我决定创建一个实现INotifyDataErrorInfo的ViewModel,在我的视图中,我将使用ValidationSummary控件来显示这些错误。
我这样做的想法是ValidationSummary控件将在我的ViewModel上侦听INotifyDataErrorInfo.ErrorsChanged事件,并在ViewModel的状态发生变化时相应地自我更新。
不幸的是它没有用。
如果我将一个TextBox添加到我的View并将其绑定到我的ViewModel上的属性...由于更改TextBox中的值而发生的任何验证错误都会显示在摘要中 - 这很好地证实了我有正确实现了INotifyDataErrorInfo。
ValidationSummary控件是否真的依赖于UI交互/ Binding来显示错误?
假设它应该监听来自INotifyDataErrorInfo的任何消息,而不管UI的组合方式是否正确?
提前感谢您的帮助。
答案 0 :(得分:1)
ValidationSummary控件需要与要验证的控件位于同一容器中才能显示错误。我没有成功显示实体级验证,也没有找到关于此主题的更多信息。
据我所知 - 你需要创建自己的验证摘要控件来监听事件并绑定到错误源。
答案 1 :(得分:0)
我认为出于这些原因使用INotifyDataErrorInfo
的目的是不正确的。这是MSDN所说的:
定义数据实体类可以实现提供的成员 自定义同步和异步验证支持。 INotifyDataErrorInfo Interface
现在的问题是:我们需要实现这个界面吗?
我假设为了告知用户导入或导出数据的结果,使用MVVM模式和INotifyPropertyChanged
将是绰绰有余。