C# 在WPF网格中循环

C# 在WPF网格中循环,c#,wpf,gridview,datagrid,grid,C#,Wpf,Gridview,Datagrid,Grid,我有一个动态创建的WPF网格(根据布局计算行数和列数),如下所示: private Grid CreateGrid(string layout) { int col; int row; if (layout == "4x4") { row = 4; col = 4; } else { row =

我有一个动态创建的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;
    }
private Grid CreateGrid(字符串布局)
{
int col;
int行;
如果(布局==“4x4”)
{
行=4;
col=4;
}
其他的
{
行=2;
col=2;
}
网格输出=新网格();
for(int i=0;i
在这些“单元”中的每一个都应该是另一个对象,用数据集中的数据填充(每个对象一个表)。该对象也是另一组栅格。我的目标是在这个动态创建的网格中循环,并将这个对象放入每个单元格中。(如果数据集中有布局2x2,但只有3个表,我只需要3个对象,最后一个单元格将为空)

然而,我并没有找到类似“foreach column in grid”的内容,甚至并没有找到如何获取列/行计数的方法。另一方面,我所发现的一切都与DataGrid或GridView有关——有什么区别,如果使用其他类型更好,为什么


提前感谢

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

代码如下:

    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”是数据集,每个表都提供了我想放在问题(输出)网格单元中的一个对象的数据


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

您可以通过执行
output.RowDefinitions.count
output.ColumnDefinitions.count
在WPF中不“循环通过网格”,因为UI不是数据。改用ItemsControl。发布一个你需要的屏幕截图,我可以告诉你在WPF中使用的正确方法。谢谢@JordyvanEijk,行和列的数量帮助我制定了一个有效的解决方案:)我觉得这有点像作弊,但它很简单,只要有效,我就不会抱怨:D