c#:如何以编程方式创建一个网格行数组

本文关键字:一个 网格 数组 创建 方式 编程 | 更新日期: 2023-09-27 18:08:26

我在c#中工作,我在一个情况下,我有一个网格(childGrid),并在这个网格内,我想动态地创建3个网格。

我想用数组来实现它。我试着这样做:

Grid[] row = new Grid[counts]; //counts=3 in my case but decde dynamically.
for (int i = 0; i < counts; i++)
{
    row[i].RowDefinitions.Add(new RowDefinition());
}

我这样做是因为我有一个childGrid(父网格),我将有3个容器(3个网格作为childGrid的子容器),所以它是row[i]在我的情况下(for i :0 to <3)(如果你看到代码)。在row[0]上。我在row[1 & 2]有一个复选框和两个不同的ui元素。我采用不同的容器,因为如果我选择row[0](复选框)的复选框,它将设置row[1].opacity=0.5;的不透明度,取消勾选它将执行row[2].opacity=0.5;。所以这就是为什么我在一个网格上有不同的3个网格容器。

row[i].RowDefinitions.Add(new RowDefinition());行给出警告。

The object reference is not set to an instance of an object.

如何实现这一点?我不能静态地做,因为我不知道静态计数的值(这里我假设是3)

c#:如何以编程方式创建一个网格行数组

在尝试向网格添加行之前,实际上没有创建任何网格。

Grid[] row = new Grid[counts];
for (int i = 0; i < counts; i++)
{
    row[i] = new Grid();
    row[i].RowDefinitions.Add(new RowDefinition());
}

如果我对你的问题理解正确的话,将所有行设置为默认值的正确方法不是添加它们,而是设置它们。

for (int i = 0; i < counts; i++)
{
    row[i].RowDefinitions[counts] = new RowDefinition();
}