Beispiel #1
0
 public PropertyMetadataXm(object defaultValue, FrameworkPropertyMetadataOptionsXm flags, PropertyChangedCallback propertyChangedCallback, CoerceValueCallback coerceValueCallback)
     : base(defaultValue, WrapCoerceCallback(WrapFrameworkFlagsCallback(propertyChangedCallback, flags), coerceValueCallback))
 {
 }
Beispiel #2
0
 public PropertyMetadataXm(object defaultValue, FrameworkPropertyMetadataOptionsXm flags)
     : this(defaultValue, flags, null, null)
 {
 }
Beispiel #3
0
 public PropertyMetadataXm(object defaultValue, FrameworkPropertyMetadataOptionsXm flags, PropertyChangedCallback propertyChangedCallback)
     : this(defaultValue, flags, propertyChangedCallback, null)
 {
 }
Beispiel #4
0
        private static PropertyChangedCallback WrapFrameworkFlagsCallback(PropertyChangedCallback propertyChangedCallback, FrameworkPropertyMetadataOptionsXm flags)
        {
            return(delegate(DependencyObject o, DependencyPropertyChangedEventArgs args)
            {
                if (o is UIElement uie)
                {
                    if ((flags & FrameworkPropertyMetadataOptionsXm.AffectsMeasure) != 0)
                    {
                        uie.InvalidateMeasure();
                    }

                    if ((flags & FrameworkPropertyMetadataOptionsXm.AffectsArrange) != 0)
                    {
                        uie.InvalidateArrange();
                    }

                    if (VisualTreeHelper.GetParent(uie) is UIElement parent)
                    {
                        if ((flags & FrameworkPropertyMetadataOptionsXm.AffectsParentMeasure) != 0)
                        {
                            parent.InvalidateMeasure();
                        }

                        if ((flags & FrameworkPropertyMetadataOptionsXm.AffectsParentArrange) != 0)
                        {
                            parent.InvalidateArrange();
                        }
                    }
                }

                propertyChangedCallback?.Invoke(o, args);
            });
        }