protected void SetValue(object model, object value, string propName)
        {
            UndoRedoPropertyItem propItem = new UndoRedoPropertyItem();

            propItem.ModelObject = model;
            propItem.PropertyStr = propName;
            propItem.NewValue    = value;
            propItem.DoCommand();
            UndoRedoSystem.AddToUndoStack(propItem);
        }
        protected void SetValue(object model, object value, Action command = null, [CallerMemberName] string propName = null)
        {
            UndoRedoPropertyItem propItem = new UndoRedoPropertyItem();

            propItem.ModelObject = model;
            propItem.PropertyStr = propName;
            propItem.NewValue    = value;
            propItem.Command     = command;
            propItem.DoCommand();
            UndoRedoSystem.AddToUndoStack(propItem);
        }