• 关于 System.ComponentModel.IDataErrorInfo



    先介绍这个IDataErrorInfo接口,定义如下:

    namespace System.ComponentModel
    {
        
    /// <summary>Provides the functionality to offer custom error information that a user interface can bind to.</summary>
        [System.Reflection.DefaultMemberAttribute("Item")]
        
    public interface IDataErrorInfo
        
    {
            
    /// <summary>Gets an error message indicating what is wrong with this object.</summary>
            
    /// <returns>An error message indicating what is wrong with this object. The default is an empty string ("").</returns>

            string Error get; }
            
    string this[string columnName] get; }
        }

    }

    Error是你的对象本身的错误描述,通过this可以返回或者设置某个属性(字段)的错误信息。
    很早以前就在载体中实现了 IDataErrorInfo ,但一直有个头大的问题,也没有时间细看,就是我修改了对象的错误信息,如何让外界知道我的这个列的错误信息改变了。
    今天有时间看看。NET的实现,原来他是触发了这个属性(字段)的值改变事件,也就是他认为是数据发生了改变,于是自己加入代码很容易实现了,但要记得在ClearErrors也触发一下。
            public void SetError(string columnName,string errorInfo)
            
    {
                
    if (columnName == null || columnName.Equals(string.Empty))
                    _rowError 
    = errorInfo;
                
    else
                
    {
                    Errors[columnName] 
    = errorInfo;
                    OnPropertyChanged(
    new PropertyChangedEventArgs(columnName));//触发事件以便通知界面改变显示
                }

            }
    差点忘记说最重要的事情了,为什么要实现这个接口呢?
    如果你实现了这个接口,你的载体绑定到界面时,你也可以像DataRow一样,在检查数据不正确时,调用SetError设置错误信息,使用系统默认的错误提示控件就可以显示自动显示错误了。
  • 相关阅读:
    聊聊Docker数据卷和数据卷容器
    Nginx虚拟主机
    Shell文本处理四剑客
    Docker镜像、容器剖析
    Tomcat性能优化及JVM内存工作原理
    Nginx动静分离架构&&HA-LB集群整合
    Mysql主从复制架构实战
    Mysql编译安装详解
    Apache虚拟主机实战
    Ansible性能调优
  • 原文地址:https://www.cnblogs.com/tansm/p/89972.html
Copyright © 2020-2023  润新知