Exemplo n.º 1
0
        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>());
            })));
        }
Exemplo n.º 2
0
 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));