public void BeginEdit() { if (!IsEditing) { BackupState = new BackupState(); } }
protected override void SetMember(string propertyName, object value) { if (IsEditing) { BackupState.SetOriginalValue(propertyName, GetPropertyInfo(propertyName).GetValue(ProxiedObject, null)); BackupState.SetNewValue(propertyName, value); RaisePropertyChanged(propertyName); } else { base.SetMember(propertyName, value); } }