protected override sealed Size ArrangeOverride (Size finalSize)
{
Size arranged = finalSize;
if (Orientation == Orientation.Vertical)
arranged.Height = 0;
else
arranged.Width = 0;
// Arrange our children
foreach (UIElement child in Children) {
Size size = child.DesiredSize;
if (Orientation == Orientation.Vertical) {
size.Width = finalSize.Width;
Rect childFinal = new Rect (0, arranged.Height, size.Width, size.Height);
if (childFinal.IsEmpty)
child.Arrange (new Rect ());
else
child.Arrange (childFinal);
arranged.Width = Math.Max (arranged.Width, size.Width);
arranged.Height += size.Height;
} else {
size.Height = finalSize.Height;
Rect childFinal = new Rect (arranged.Width, 0, size.Width, size.Height);
if (childFinal.IsEmpty)
child.Arrange (new Rect ());
else
child.Arrange (childFinal);
arranged.Width += size.Width;
arranged.Height = Math.Max (arranged.Height, size.Height);
}
}
if (Orientation == Orientation.Vertical)
arranged.Height = Math.Max (arranged.Height, finalSize.Height);
else
arranged.Width = Math.Max (arranged.Width, finalSize.Width);
return arranged;
}
}