/// <summary>
        /// Donne les dimensions de la ligne selon un indexe de ligne.
        /// </summary>
        /// <param name="indexRow"></param>
        /// <returns></returns>
        public List <KeyValuePair <string, string> > GetRowDimensionsValues(int indexRow)
        {
            List <KeyValuePair <string, string> > dimsVals = new List <KeyValuePair <string, string> >();

            if ((RowsData.Count < indexRow) || (indexRow < 0))
            {
                return(dimsVals);
            }

            foreach (AtomicValue va in RowsData.ElementAt(indexRow).Values)
            {
                dimsVals.Add(new KeyValuePair <string, string>(va.DimensionName.ToString(), va.Value));
            }

            return(dimsVals);
        }
        public override void CalculateLayout(Rectangle cors)
        {
            RowsData.ForEach(d => d.Reset());
            ColumnsData.ForEach(d => d.Reset());

            HashSet <GridContent> visitedContent = new HashSet <GridContent>();

            for (int i = 0; i < RowCount; i++)
            {
                for (int j = 0; j < ColumnCount; j++)
                {
                    var content = Grid[i, j];

                    // If no content, create an Auto container
                    if (content == null)
                    {
                        AddAuto(AcceptedContents,
                                (i, j),
                                1, 1);
                        content = Grid[i, j];

                        if (content == null)
                        {
                            throw new InvalidOperationException("Content should not be null.");
                        }
                    }

                    var visited    = visitedContent.Contains(content);
                    var rowSize    = Rows[i];
                    var columnSize = Columns[j];

                    // Compute new free size for row + column & Increment counters
                    if (columnSize.IsFill)
                    {
                        if (visited == false)
                        {
                            RowsData[i].UsedSize += content.MinSize.Width;
                        }
                    }
                    else
                    {
                        RowsData[i].FillBlockCount++;
                    }

                    if (rowSize.IsFill)
                    {
                        if (visited == false)
                        {
                            ColumnsData[j].UsedSize += content.MinSize.Height;
                        }
                    }
                    else
                    {
                        ColumnsData[j].FillBlockCount++;
                    }

                    ColumnsData[j].BlockCount++;
                    RowsData[i].BlockCount++;

                    visitedContent.Add(content);
                }
            }
        }