我在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)
答案 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());
}