/// <summary>
        /// 当类修改时发生
        /// </summary>
        public event PropertyChangedEventHandler PropertyChanged;
        /// <summary>
        /// 引发PropertyChanged事件
        /// </summary>
        /// <param name="propertyName"></param>
        protected virtual void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }  /// 当保存后发生
        /// </summary>
        public static event EventHandler<SavedEventArgs> Saved;
        /// <summary>
        /// 引发Saved事件
        /// </summary>
        /// <param name="bussinessObject"></param>
        /// <param name="action"></param>
        protected static void OnSaved(BusinessBase<Type, Key> bussinessObject, SaveAction action)
        {
            if (Saved != null)
            {
                Saved(bussinessObject, new SavedEventArgs(action));
            }
        }
我知道上面的代码是一个事件,是BlogEngine.NET 1.5 中BusinessBase.cs基类,我就是不明白,这个事件为什么要这么写,以及,怎么使用这么个事件,我对事件和委托一知半解,请大虾们,说的详细一点,最好能把上面的代码讲解一下

解决方案 »

  1.   

    就是委托事件,可以扩展么
    PropertyChanged +=自己的PropertyChanged
    Saved+=自己的Saved不知道还怎么解释
      

  2.   


                if (PropertyChanged != null)//如果事件已经被监听
                {
                    //触发事件,传递参数(即属性名称)
                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
                }使用事件:
    //声明BusinessBase对象
    BusinessBase businessbase = new BusinessBase();
    //监听BusinessBase的PropertyChanged,指定当事件发生时由businessbase_PropertyChanged方法处理
    businessbase.PropertyChanged += new PropertyChangedEventHandler(businessbase_PropertyChanged);//在BusinessBase类中OnPropertyChanged方法会触发PropertyChanged事件,
    //由于该事件已经被businessbase对象监听,所有事件发生后会跳入
    //businessbase_PropertyChanged方法进行处理
    private void businessbase_PropertyChanged(Object sender,PropertyChangedEventArgs e)
    {
      
    }
      

  3.   

    实体类实现IPropertyChanged接口以支持双向绑定是一种约定。
    双向绑定是什么意思啊?
    1、控件上改变数据=>控件绑定的数据源也跟着改变;
    2、控件绑定的数据源的数据改变=>控件上立即反映出来。
    要想支持效果2,那控件绑定的实体类,或实体类集合中的单个类必须实现IPropertyChanged接口。
    这是一种约定。到了WPF/Silverlight 2 & 3,它被一种更牛叉的DependencyProperty取代了,应该说。