/// <summary> /// Atribui um valor para uma propriedade. /// </summary> /// <param name="property">Propriedade que terá seu valor alterado</param> /// <param name="value">Novo valor da propriedade</param> public void SetValue(ControlProperty property, Object value) { var slot = GetSlot(property, true); if (slot.StoredValue == value) { return; } var oldValue = slot.StoredValue; slot.StoredValue = value; property.NotifyPropertyChanged(this, oldValue, slot.StoredValue); }
/// <summary> /// Atribui um valor para uma propriedade somente-leitura. /// </summary> /// <param name="property">Propriedade que terá seu valor alterado.</param> /// <param name="value">Novo valor da propriedade</param> protected void SetReadOnlyValue(ControlProperty property, Object value) { if (!property.IsReadOnly) { throw new InvalidOperationException(String.Format("The property {0}.{1} is not a readonly property.", property.OwnerTypeName, property.PropertyTypeName)); } var slot = GetSlot(property, true); if (slot.StoredValue == value) { return; } var oldValue = slot.StoredValue; slot.SetReadOnlyValue(value); property.NotifyPropertyChanged(this, oldValue, slot.StoredValue); }