protected override SizeRequest OnMeasure(double widthConstraint, double heightConstraint)
        {
            var layoutInfo = new LayoutInfo(Spacing);

            layoutInfo.ProcessLayout(Children, widthConstraint);
            return(new SizeRequest(new Size(widthConstraint, layoutInfo.HeightRequest)));
        }
        protected override void LayoutChildren(double x, double y, double width, double height)
        {
            var layoutInfo = new LayoutInfo(Spacing);

            layoutInfo.ProcessLayout(Children, width);

            for (int i = 0; i < layoutInfo.Bounds.Count; i++)
            {
                if (!Children[i].IsVisible)
                {
                    continue;
                }
                var bounds = layoutInfo.Bounds[i];
                bounds.Left += x;
                bounds.Top  += y;
                LayoutChildIntoBoundingRegion(Children[i], bounds);
            }
        }