/// <summary> /// Gets the underlying bound value. /// </summary> /// <returns>The underlying bound value.</returns> protected T GetUnderlyingValue() { if (!IsReadable) { throw new InvalidOperationException(PresentationStrings.BindingIsWriteOnly); } return(getter(PresentationFoundation.GetDataSourceWrapper(dependencyValue.Owner.DependencyDataSource))); }
/// <summary> /// Sets the underlying bound value. /// </summary> /// <param name="value">The value to set.</param> protected void SetUnderlyingValue(T value) { if (!IsWritable) { throw new InvalidOperationException(PresentationStrings.BindingIsReadOnly); } var owner = dependencyValue.Owner; var metadata = dependencyValue.Property.GetMetadataForOwner(owner.GetType()); if (metadata.CoerceValueCallback != null) { value = metadata.CoerceValue <T>(owner, value); } setter(PresentationFoundation.GetDataSourceWrapper(dependencyValue.Owner.DependencyDataSource), value); dependencyValue.DigestImmediately(); }