public virtual void CancelEdit(IUserEditable originatingObject) { if (!IsEditing || !ReferenceEquals(_originatingEditingObject, originatingObject)) { return; } IsEditing = false; var accessor = GetTypeAccessor(); foreach (var propertyName in GetBackupProperties()) { var value = BackupValues[propertyName]; RemoveTracker(propertyName); if (!IsEqualToBackup(accessor[this, propertyName], propertyName)) { accessor[this, propertyName] = value; } if (value is IUserEditable editable && GetEditableProperties().Contains(propertyName)) { editable.CancelEdit(this); } } UserModifiedProperties.Clear(); IsUserModified = false; _originatingEditingObject = null; }
public virtual void EndEdit(IUserEditable originatingObject) { if (!IsEditing || !ReferenceEquals(_originatingEditingObject, originatingObject)) { return; } IsEditing = false; foreach (var propertyName in GetBackupProperties()) { var value = PropertyHelper.GetPropertyValue(this, propertyName); if (GetEditableProperties().Contains(propertyName) && value is IUserEditable editable) { RemoveTracker(propertyName); editable.EndEdit(this); } } UserModifiedProperties.Clear(); IsUserModified = false; _originatingEditingObject = null; }
public void CancelEdit(IUserEditable originatingObject) { if (!IsEditing || !ReferenceEquals(_originatingEditingObject, originatingObject)) { return; } IsUserModified = false; IsEditing = false; foreach (var i in this.Union(_backupValues)) { i.PropertyChanged -= _sharedPropertyChangedEventHandler; i.CancelEdit(this); } this.SynchronizeCollection(_backupValues); foreach (var i in this) { i.CancelEdit(this); } _originatingEditingObject = null; }
public override void BeginEdit(IUserEditable originatingObject) { if (!IsEditing) { _lastCharacteristicsUserModifiedValue = false; _lastTypesUserModifiedValue = false; } base.BeginEdit(originatingObject); }
public void BeginEdit(IUserEditable originatingObject) { _backupValues = new List <T>(this); IsUserModified = false; IsEditing = true; _originatingEditingObject = originatingObject; _userModifiedItems.Clear(); foreach (var i in this) { i.BeginEdit(this); i.PropertyChanged += _sharedPropertyChangedEventHandler; } }
public void EndEdit(IUserEditable originatingObject) { if (!IsEditing || !ReferenceEquals(_originatingEditingObject, originatingObject)) { return; } IsUserModified = false; IsEditing = false; foreach (var i in this) { i.PropertyChanged -= _sharedPropertyChangedEventHandler; i.EndEdit(this); } _originatingEditingObject = null; }
public virtual void BeginEdit(IUserEditable originatingObject) { if (IsEditing) { return; } IsUserModified = false; IsEditing = true; _originatingEditingObject = originatingObject; var accessor = GetTypeAccessor(); foreach (var propertyName in GetBackupProperties()) { var value = accessor[this, propertyName]; BackupValues[propertyName] = value; if (GetEditableProperties().Contains(propertyName) && value is IUserEditable editable) { editable.BeginEdit(this); ApplyTracker(propertyName, value); } } }