通过WPF网格循环

时间:2014-04-16 07:44:30

标签: c# wpf gridview datagrid grid

我有一个动态创建的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;
    }

在每个“单元格”中应该是另一个对象,用dataSet中的数据填充(每个对象一个表)。该对象也是另一组网格。我的目标是遍历这个动态创建的网格,并将此对象放入每个单元格。 (如果数据集中有布局2x2但只有3个表,我只需要3个对象,最后一个单元格将为空)

但是,我没有找到类似“网格中的foreach列”的内容,甚至没有找到如何获取列/行数。另一方面,我发现的所有内容都与DataGrid或GridView有关 - 有什么区别,如果另一种类型更好用于此,为什么?

提前致谢

1 个答案:

答案 0 :(得分: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++;
        }
    }

“result”是数据集,每个表都提供了我想在问题(输出)中放入网格单元格中的一个对象的数据。

但是,如果有人有更好的解决方案,我愿意接受以下建议:)