Canvas

    技术2022-05-19  18

    public class CusCanvas : Canvas    {        // Methods        protected override Size ArrangeOverride(Size arrangeSize)        {            foreach (UIElement element in base.InternalChildren)            {                if (element == null)                {                    continue;                }                double x = 0.0;                double y = 0.0;                double left = GetLeft(element);                if (!Double.IsNaN(left))                {                    x = left;                }                else                {                    double right = GetRight(element);                    if (!Double.IsNaN(right))                    {                        x = (arrangeSize.Width - element.DesiredSize.Width) - right;                    }                }                double top = GetTop(element);                if (!Double.IsNaN(top))                {                    y = top;                }                else                {                    double bottom = GetBottom(element);                    if (!Double.IsNaN(bottom))                    {                        y = (arrangeSize.Height - element.DesiredSize.Height) - bottom;                    }                }                element.Arrange(new Rect(new Point(x, y), element.DesiredSize));            }            return arrangeSize;        }

            protected override Size MeasureOverride(Size constraint)        {            Size availableSize = new Size(double.PositiveInfinity, double.PositiveInfinity);            foreach (UIElement element in base.InternalChildren)            {                if (element != null)                {                    element.Measure(availableSize);                }            }            return new Size();        }

            private static void OnPositioningChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)        {            UIElement reference = d as UIElement;            if (reference != null)            {                Canvas parent = VisualTreeHelper.GetParent(reference) as Canvas;                if (parent != null)                {                    parent.InvalidateArrange();                }            }        }

        }


    最新回复(0)