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

时间:2014-06-13 15:21:35

标签: c# .net silverlight grid silverlight-5.0

我在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个网格作为容器作为chidGrid的子容器)所以在我的情况下它是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)

2 个答案:

答案 0 :(得分:1)

如果我正确地解释了您的问题,将所有行设置为默认值的正确方法不是添加它们,而是设置它们。

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

答案 1 :(得分:1)

在尝试向其添加行之前,您实际上并未创建任何网格。

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