/// <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); } } }