public override void SetValue(object component, object value) { DesignObjectWrapper instance = (DesignObjectWrapper)component; if (!instance.IsUndoRedoInProgress) { if (null != this.descriptorData.PropertyValidator) { string error = null; ValidationException exception = null; try { List <string> errors = new List <string>(); if (!this.descriptorData.PropertyValidator(instance, value, errors)) { StringBuilder sb = new StringBuilder(); errors.ForEach((errMessage) => { sb.AppendLine(errMessage); }); error = sb.ToString(); exception = new ValidationException(error); } } catch (Exception err) { if (Fx.IsFatal(err)) { throw FxTrace.Exception.AsError(err); } else { exception = new ValidationException(err.Message, err); } } if (null != exception) { instance.ValidationErrors[this.Name] = exception.Message; instance.RaisePropertyChangedEvent(this.validationErrorPropertyName); instance.RaisePropertyChangedEvent(DesignObjectWrapper.HasErrorsProperty); throw FxTrace.Exception.AsError(exception); } else if (null != instance.validationErrors && instance.validationErrors.ContainsKey(this.Name)) { instance.validationErrors.Remove(this.Name); if (0 == instance.validationErrors.Count) { instance.validationErrors = null; } instance.RaisePropertyChangedEvent(this.validationErrorPropertyName); instance.RaisePropertyChangedEvent(DesignObjectWrapper.HasErrorsProperty); } } this.descriptorData.PropertySetter(instance, value); (instance.Content as IModelTreeItem).ModelTreeManager.AddToCurrentEditingScope(new FakeModelNotifyPropertyChange(instance.Content as IModelTreeItem, this.Name)); } }
public override void ResetValue(object component) { DesignObjectWrapper instance = (DesignObjectWrapper)component; this.descriptorData.PropertySetter(instance, null); }
public override object GetValue(object component) { DesignObjectWrapper instance = (DesignObjectWrapper)component; return(!instance.isDisposed ? this.descriptorData.PropertyGetter(instance) : null); }