protected override Size MeasureOverride(Size availableSize)
        {
            AdornerLayer.Measure(availableSize);

            Size availableScrollSize = new Size(CanHorizontallyScroll ? Double.PositiveInfinity : availableSize.Width, CanVerticallyScroll ? Double.PositiveInfinity : availableSize.Height);
            Size measuredSize        = base.MeasureOverride(availableScrollSize);

            innerScrollInfo.ExtentSize   = measuredSize;
            innerScrollInfo.ViewportSize = availableSize;

            return(measuredSize.Min(availableSize));
        }