public override Size Measure(IFigure parent, SizeConstraint constraint) { if (!parent.Children.Any()) { return(_emptyPreferredSize + _padding.Size); } var ret = new Size(0, _padding.Top); var clientAreaConstraint = constraint.Deflate(_padding.Size); foreach (var child in parent.Children) { if (child.IsVisible) { child.Measure(clientAreaConstraint); var prefSize = child.PreferredSize; ret.Width = Math.Max(prefSize.Width, ret.Width); ret.Height += prefSize.Height + _itemSpace; } } ret.Width += _padding.Width; ret.Height += _padding.Bottom - _itemSpace; return(constraint.MeasureConstrainedSize(ret)); }