2014-04-16 52 views
0

我已动态创建的WPF网格(行和列计数基于布局)所示:通过WPF电网循环

private Grid CreateGrid(string layout) 
    { 
     int col; 
     int row; 
     if (layout == "4x4") 
     { 
      row = 4; 
      col = 4; 
     } 
     else 
     { 
      row = 2; 
      col = 2; 
     } 

     Grid output = new Grid(); 

     for (int i = 0; i < col; i++) 
     { 
      ColumnDefinition coldef = new ColumnDefinition(); 
      coldef.Width = GridLength.Auto; 
      output.ColumnDefinitions.Add(coldef); 
     } 

     for (int i = 0; i < row; i++) 
     { 
      RowDefinition rowdef = new RowDefinition(); 
      rowdef.Height = GridLength.Auto; 
      output.RowDefinitions.Add(rowdef); 
     } 

     return output; 
    } 

在每个这些“单元”的应该是另一个对象,填充来自数据集的数据(每个对象一个表)。该对象也是另一组网格。我的目标是循环这个动态创建的网格,并将这个对象放入每个单元格中。 (如果数据集中有布局2×2但只有3个表格,那么我只需要3个对象,最后一个单元格就是空的)

但是,我没有发现像“网格中的foreach列”,甚至没有找到获得列/行数。另一方面,我发现的所有内容都与DataGrid或GridView相关 - 有什么区别,如果其他类型更适合使用,为什么?

在此先感谢

+0

您可以通过执行'output.RowDefinitions.Count'或'output.ColumnDefinitions.Count'数行,你有列数 –

+0

因为UI不是数据,所以您不需要在WPF中“循环通过网格”。改用ItemsControl。发布你需要的截图,我可以告诉你在WPF中完成它的正确方法。 –

+0

感谢@JordyvanEijk,行数和列数帮助我制定了一个工作解决方案:)我觉得有点像这样做几乎是作弊,但它很简单,只要它有效,我不会抱怨:D – Asheara

回答

0

因此,我能够找到解决方案。它可能不是最好的,但它有效。

下面是代码:

foreach (DataTable table in result.Tables) 
    { 
     GfoTopBox box1 = StuffData(table); 
     Grid.SetRow(box1, j); 
     Grid.SetColumn(box1, i); 
     output.Children.Add(box1); 

     i++; 
     if (i >= output.ColumnDefinitions.Count) 
     { 
      i = 0; 
      j++; 
     } 
    } 

“的结果”是数据集,每个表提供的数据我希望把在网格的细胞中的问题中的一个对象(输出) 。

但是,如果任何人有更好的解决办法,我愿意接受建议:)