/// <summary>
        /// Measure adorner.
        /// </summary>
        protected override Size MeasureOverride(Size constraint)
        {
            Debug.Assert(child != null, "_child should not be null");

            if (ReferenceElement != null && AdornedElement != null &&
                AdornedElement.IsMeasureValid &&
                !AreClose(ReferenceElement.DesiredSize, AdornedElement.DesiredSize))
            {
                ReferenceElement.InvalidateMeasure();
            }

            child.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));

            return(child.DesiredSize);
        }