Exemplo n.º 1
0
        /// <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];
            }
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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];
            }
        }