/// <summary> /// If necessary, expands the virtual cell metadata array to accomodate all of the grid's virtual cells. /// </summary> private void ExpandVirtualCellMetadataArray() { if (virtualCells != null && virtualCells.Length == Children.Count) { return; } virtualCells = new VirtualCellMetadata[Children.Count]; for (int i = 0; i < virtualCells.Length; i++) { virtualCells[i] = new VirtualCellMetadata(); virtualCells[i].Element = Children[i]; } }
/// <summary> /// Measures the element contained by the specified virtual cell. /// </summary> /// <param name="cell">The virtual cell to measure.</param> /// <param name="options">The measurement options for this cell.</param> private void MeasureVirtualCell(VirtualCellMetadata cell, GridMeasurementOptions options) { var cellWidth = 0.0; var cellHeight = 0.0; if ((options & GridMeasurementOptions.AssumeInfiniteWidth) == GridMeasurementOptions.AssumeInfiniteWidth) { cellWidth = Double.PositiveInfinity; } else { // If we contain auto columns, then the content determines our width (so assume no constraint) if (cell.ContainsAutoColumns && !cell.ContainsStarColumns) { cellWidth = Double.PositiveInfinity; } else { cellWidth = CalculateSpanDimension(ColumnDefinitions, cell.ColumnIndex, cell.ColumnSpan); } } if ((options & GridMeasurementOptions.AssumeInfiniteHeight) == GridMeasurementOptions.AssumeInfiniteHeight) { cellHeight = Double.PositiveInfinity; } else { // If we contain auto rows, then the content determines our height (so assume no constraint) if (cell.ContainsAutoRows && !cell.ContainsStarRows) { cellHeight = Double.PositiveInfinity; } else { cellHeight = CalculateSpanDimension(RowDefinitions, cell.RowIndex, cell.RowSpan); } } var cellSize = new Size2D(cellWidth, cellHeight); cell.Element.Measure(cellSize); }
/// <summary> /// If necessary, expands the virtual cell metadata array to accomodate all of the grid's virtual cells. /// </summary> private void ExpandVirtualCellMetadataArray() { if (virtualCells != null && virtualCells.Length == Children.Count) return; virtualCells = new VirtualCellMetadata[Children.Count]; for (int i = 0; i < virtualCells.Length; i++) { virtualCells[i] = new VirtualCellMetadata(); virtualCells[i].Element = Children[i]; } }