Ejemplo n.º 1
0
        public void OnPropertyChanged(string propertyName, object before, object after)
        {
            var args = new PropertyChangedVerboseEventArgs(propertyName, before, after);

            PropertyChanged?.Invoke(this, args);
            DebugModel?.LogPropertyChange(this, args);
            if (DebugModel != null)
            {
                UndoManager.PushFromEvent(this, args);
            }
        }
Ejemplo n.º 2
0
        public PropertyUndoable(object target, PropertyChangedVerboseEventArgs args)
        {
            Target = target;

            try
            {
                PropertyInfo = target.GetType().GetTypeInfo().GetDeclaredProperty(args.PropertyName);
                if (PropertyInfo == null)
                {
                    return;
                }
                CanUndo = true;
            }
            catch (Exception)
            { }

            Args = args;
        }
Ejemplo n.º 3
0
 public static void PushFromEvent(object target, PropertyChangedVerboseEventArgs args)
 {
     Push(new PropertyUndoable(target, args));
 }
Ejemplo n.º 4
0
 public void LogPropertyChange(object target, PropertyChangedVerboseEventArgs a)
 {
     AppendLog($"{target.GetType()}.{a.PropertyName} set from '{a.Before}' to '{a.After}'");
 }