public static DependencyProperty Add <TOwner, TValue>( this DependencyProperty @this, Meta <TOwner, TValue> meta, DPExtOptions options = DPExtOptions.None) where TOwner : DependencyObject { return(@this.AddOwner( typeof(TOwner), new FrameworkPropertyMetadata( options == DPExtOptions.ForceManualInherit ? @this.DefaultMetadata.DefaultValue : meta.DefaultValue, meta.OptionFlags, (obj, args) => { //return true; meta.PropertyChangedCallback.Invoke( obj.As <TOwner>(), new DPChangedEventArgs <TValue>( args.Property.As <DependencyProperty>(), args.NewValue.As <TValue>(), args.NewValue.As <TValue>())); }, (obj, baseValue) => { return baseValue; meta.CoerceValueCallback( obj.As <TOwner>(), baseValue.As <TValue>()); }))); }
public static DependencyProperty Add <D, T>(DependencyProperty property, Meta <D, T> meta, DPExtOptions options = DPExtOptions.None) where D : DependencyObject => property.AddOwner(typeof(D), new FrameworkPropertyMetadata(options == DPExtOptions.ForceManualInherit ? property.DefaultMetadata.DefaultValue : meta.DefaultValue, meta.Flags, meta.ChangedCallback.TryInvoke, meta.CoerceCallback.TryInvoke));