Exemple #1
0
        /// <summary>
        /// Gets row definition for the specified view.
        /// </summary>
        private RowDefinition GetRowDefinition(UIView child)
        {
            var cellIndex     = Cell.GetValue(child);
            int rowIndex      = cellIndex.Row < Rows.Count ? cellIndex.Row : Rows.Count - 1;
            var rowDefinition = Rows[rowIndex];

            var cellSpan = CellSpan.GetValue(child);

            if (cellSpan == null || cellSpan.Row <= 1)
            {
                return(rowDefinition);
            }

            var rowSpacing = RowSpacing ?? (Spacing ?? ElementSize.Default);

            // calculate new row definition based on row span
            var spannedRowDefinition = new RowDefinition(rowDefinition);

            for (int i = 1; i < cellSpan.Row; ++i)
            {
                int nextRowIndex = rowIndex + i;
                if (nextRowIndex >= Rows.Count)
                {
                    break;
                }

                var nextRowDefinition = Rows[nextRowIndex];

                // add actual width and spacing of next row
                spannedRowDefinition.ActualHeight += nextRowDefinition.ActualHeight + rowSpacing;
            }
            return(spannedRowDefinition);
        }
Exemple #2
0
        /// <summary>
        /// Gets column definition for the specified view.
        /// </summary>
        private ColumnDefinition GetColumnDefinition(UIView child)
        {
            var cellIndex        = Cell.GetValue(child);
            int columnIndex      = cellIndex.Column < Columns.Count ? cellIndex.Column : Columns.Count - 1;
            var columnDefinition = Columns[columnIndex];

            var cellSpan = CellSpan.GetValue(child);

            if (cellSpan == null || cellSpan.Column <= 1)
            {
                return(columnDefinition);
            }

            var columnSpacing = ColumnSpacing ?? (Spacing ?? ElementSize.Default);

            // calculate new column definition based on column span
            var spannedColumnDefinition = new ColumnDefinition(columnDefinition);

            for (int i = 1; i < cellSpan.Column; ++i)
            {
                int nextColumnIndex = columnIndex + i;
                if (nextColumnIndex >= Columns.Count)
                {
                    break;
                }

                var nextColumnDefinition = Columns[nextColumnIndex];

                // add actual width and spacing of next column
                spannedColumnDefinition.ActualWidth += nextColumnDefinition.ActualWidth + columnSpacing;
            }
            return(spannedColumnDefinition);
        }