本文将针对 WPF 的 TextBox 文本框,探究其中的一种验证方式 —— 使用 INotifyDataErrorInfo 在数据对象中进行验证。 而按《WPF 编程宝典》一书的描述,INotifyDataErrorInfo 其实可以看作是 IDataErrorInfo 的升级版: IDataErrorInfo 和 INotifyDataErrorInfo INotifyDataErrorInfo 接口具有类似的作用,但界面更丰富,是针对 Silverlight 创建的,并且已移植到了 WPF 4.5。 所以,本文直接研究 INotifyDataErrorInfo。后续可能还会研究其它不是针对数据对象的验证方式,这是后话了,暂且不表。 四、实现验证接口 首先我们让绑定基类实现 INotifyDataErrorInfo 接口,实现该接口要实现三个成员: 具体为,一个获取错误列表的方法 GetErrors,一个指示是否存在错误的属性 HasErrors
除了 INotifyPropertyChanged,绑定机制中另一个十分有用的接口是 INotifyDataErrorInfo,它用于公开数据验证的结果。 要使用 ErrorsContainer,可以先写一个类似这样的基类: public class DomainObject : BindableBase, INotifyDataErrorInfo { ://github.com/PrismLibrary/Prism https://prismlibrary.com/docs/index.html INotifyPropertyChanged 接口 INotifyDataErrorInfo
INotifyDataErrorInfo的常规定义 我将分两次讨论INotifyDataErrorInfo接口。 在本小节中,我将解释本该如何使用INotifyDataErrorInfo,然后在下一个小节解释我认为应该如何使用它。 INotifyDataErrorInfo接口旨在支持Silverlight 4中的异步验证,其基本想法是修改属性会触发服务调用,被调用的服务最终会结束并更新错误状态。 INotifyDataErrorInfo的正确用法 尽管存在缺陷,但INotifyDataErrorInfo已经被用在很多UI框架中,所以我们无法忽略它。
================================ Error Propogation Silverlight的数据验证机制,在这里得到了很多的扩充,提供了IDataErrorInfo、INotifyDataErrorInfo
nameof(Name), new List<string> { "请输入名称" }); } } public abstract class ModelBase : BindableBase, INotifyDataErrorInfo
errors这一句不知道是什么意思) 要想了解更多信息,请看:http://msdn.microsoft.com/en-us/library/vstudio/system.componentmodel.inotifydataerrorinfo
Foundation (WPF) 在.NET框架4.5开发人员预览版中,Windows Presentation Foundation(WPF)包含以下几个方面的变化和改进: -新的ribbon控件 -新INotifyDataErrorInfo
_collapsedSlotsTable = new IndexToValueTable<Visibility>(); _validationItems = new Dictionary<INotifyDataErrorInfo
ValidatesOnNotifyDataErrors:指示是否在数据对象实现了INotifyDataErrorInfo接口时进行验证。
INotifyDataErrorInfo 定义数据实体类可实现以提供自定义同步和异步验证支持的成员。 INotifyPropertyChanged 通知客户端属性值已更改。