void UnsubscribeChanged(object obj)
        {
            ChangeDependencyObject c = obj as ChangeDependencyObject;

            if (c != null)
            {
                c.ObjectChanged -= new EventHandler(obj_ObjectChanged);
            }
        }
예제 #2
0
        private void DoUpdate()
        {
            ValidationCollection.Clear();
            ProcessValidation();
            ValidationObject v = ChangeDependencyObject.GetOverallValidation(this);

            this.ValidationCollection.AddValidation(null, v.Code, v.Message);
            Changed = true;
        }
        public override void AcceptChanges()
        {
            base.AcceptChanges();

            foreach (T item in this)
            {
                ChangeDependencyObject cdo = item as ChangeDependencyObject;
                if (cdo != null)
                {
                    cdo.AcceptChanges();
                }
            }
        }
 public override void RejectChanges()
 {
     base.RejectChanges();
     if (typeof(T) == typeof(ChangeDependencyObject))
     {
         foreach (T item in this)
         {
             ChangeDependencyObject cdo = item as ChangeDependencyObject;
             if (cdo != null)
             {
                 cdo.RejectChanges();
             }
         }
     }
 }
 public override void BeginInitialization()
 {
     base.BeginInitialization();
     if (typeof(T) == typeof(ChangeDependencyObject))
     {
         foreach (T item in this)
         {
             ChangeDependencyObject cdo = item as ChangeDependencyObject;
             if (cdo != null)
             {
                 cdo.BeginInitialization();
             }
         }
     }
 }
        static void OnChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {
            ChangeDependencyObject me = sender as ChangeDependencyObject;

            if (me != null)
            {
                if (me.Changed)
                {
                    if ((bool)e.OldValue != (bool)e.NewValue)
                    {
                        if (me.ObjectChanged != null)
                        {
                            me.ObjectChanged(me, EventArgs.Empty);
                        }
                    }
                }
            }
        }
        public virtual void AcceptChanges()
        {
            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Starting {0}", MethodBase.GetCurrentMethod().ToString());
            }

            try
            {
                Type[] t = new Type[0];

                if (this.GetType().GetConstructor(t) != null)
                {
                    Original = this.GetType().GetInstance() as ChangeDependencyObject;
                }
            }
            catch (System.ArgumentException ex)
            {
                if (_log.IsWarnEnabled)
                {
                    _log.Warn("Error initializing \"Original\"", ex);
                }
            }
            if (Original != null)
            {
                Original.BeginInitialization();
                Original.CopyProperties(this);
                Original.EndInitialization();
            }

            DoProcessValidation();

            Changed = false;



            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Ending {0}", MethodBase.GetCurrentMethod().ToString());
            }
        }
        protected static void OnItemChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {
            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Starting {0}", MethodBase.GetCurrentMethod().ToString());
            }
            ChangeDependencyObject me = sender as ChangeDependencyObject;

            if (me != null && !me.IsInitializing)
            {
                if (e.NewValue != e.OldValue)
                {
                    me.Changed = true;
                    me.DoProcessValidation();
                }
            }
            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Ending {0}", MethodBase.GetCurrentMethod().ToString());
            }
        }