public Size Measure(FormsLayoutInfo info) { var desiredHeight = 0.0; var childrenSize = new Size(info.Size.Width, double.PositiveInfinity); foreach (var child in info.Children) { child.Measure(childrenSize); desiredHeight += child.DesiredSize.Height; } return new Size(info.Size.Width, desiredHeight); }
private double ArrangeChildren(FormsLayoutInfo info, int start, int to, double childXPosition, double childWidth, bool useInstantAnimation) { var currentHeight = 0.0; for (int i = start; i < to; i++) { var child = info.Children[i]; var childHeight = child.DesiredSize.Height; var animationDuration = useInstantAnimation ? ZeroAnimationDuration : DefaultAnimationDuration; ArrangeChildFluently(child, new Point(childXPosition, currentHeight), new Size(childWidth, childHeight), animationDuration); currentHeight += childHeight; } return currentHeight; }
public Size Measure(FormsLayoutInfo info) { if (info.Children.Count == 0) return new Size(info.Size.Width, 0.0); var childWidth = info.Size.Width / 2.0; var childSize = new Size(childWidth, double.PositiveInfinity); var leftColumnCount = Math.Min(info.Children.Count, info.BreakOnItem); var firstColumnSize = MeasureChildren(info.Children, 0, leftColumnCount, childSize); var secondColumnSize = MeasureChildren(info.Children, info.BreakOnItem, info.Children.Count, childSize); var finalHeight = Math.Max(firstColumnSize, secondColumnSize); return new Size(info.Size.Width, finalHeight); }
public Size Arrange(FormsLayoutInfo info, bool useInstantAnimation) { using (BeginStoryboard()) { var currentHeight = 0.0; foreach (var child in info.Children) { var desiredChildHeight = child.DesiredSize.Height; var animationDuration = useInstantAnimation ? ZeroAnimationDuration : DefaultAnimationDuration; ArrangeChildFluently(child, new Point(0.0, currentHeight), new Size(info.Size.Width, desiredChildHeight), animationDuration); currentHeight += desiredChildHeight; } return new Size(info.Size.Width, currentHeight); } }
public Size Arrange(FormsLayoutInfo info, bool useInstantAnimation) { if (info.Children.Count == 0) return new Size(info.Size.Width, 0.0); var childWidth = info.Size.Width / 2.0; var leftColumnCount = Math.Min(info.Children.Count, info.BreakOnItem); using (BeginStoryboard()) { var firstColumnHeight = ArrangeChildren(info, 0, leftColumnCount, 0.0, childWidth, useInstantAnimation); var secondColumnHeight = ArrangeChildren(info, info.BreakOnItem, info.Children.Count, childWidth, childWidth, useInstantAnimation); var finalHeight = Math.Max(firstColumnHeight, secondColumnHeight); return new Size(info.Size.Width, finalHeight); } }
private double ArrangeRightColumnChildren(FormsLayoutInfo info, int start, int to, double childXPosition, double childWidth, bool useInstantAnimation) { var currentHeight = 0.0; for (int i = start; i < to; i++) { var child = info.Children[i]; var childHeight = child.DesiredSize.Height; var animationDuration = useInstantAnimation ? ZeroAnimationDuration : DefaultAnimationDuration; var nextAnchorPoint = GetNextAnchorPoint(currentHeight); if (nextAnchorPoint.HasValue && nextAnchorPoint.Value < currentHeight + childHeight) currentHeight = nextAnchorPoint.Value; ArrangeChildFluently(child, new Point(childXPosition, currentHeight), new Size(childWidth, childHeight), animationDuration); currentHeight += childHeight; } _firstColumnAnchorPoints.Clear(); return currentHeight; }