我以编程方式创建了具有'n'个行数和列数的网格布局。
Grid test = new Grid();
for (int i = 1; i <= cols1; i++)
{
for (int j = 1; j <= rows1; j++)
{
if (array[i, j] != null)
{
ColumnDefinition col = new ColumnDefinition();
col.Width = new GridLength(50);
test.ColumnDefinitions.Add(col);
RowDefinition row = new RowDefinition();
row.Height = new GridLength(50);
test.RowDefinitions.Add(row);
Image img = new Image();
img.source = new BitmapImage(new Uri("testimg.jpg", urikind.Relative));
Grid.SetRow(img, j);
Grid.SetColumn(img, i);
test.Children.Add(img);
}
}
}
空格值未添加到网格中。这样就有空列。它在空列中腾出空间
如何避免空列。
任何帮助将不胜感激。
答案 0 :(得分:0)
你应该这样做:
Grid test = new Grid();
for (int j = 0; j <= rows1; j++)
{
RowDefinition row = new RowDefinition();
row.Height = new GridLength(50);
test.RowDefinitions.Add(row);
for (int i = 0; i <= cols1; i++)
{
if (array[i, j] != null)
{
if(j == 0)
{
ColumnDefinition col = new ColumnDefinition();
col.Width = new GridLength(50);
test.ColumnDefinitions.Add(col);
}
Image img = new Image();
img.source = new BitmapImage(new Uri("testimg.jpg", urikind.Relative));
Grid.SetRow(img, j);
Grid.SetColumn(img, i);
test.Children.Add(img);
}
else
{
i--;
}
}
}
您应该避免为每个元素添加ColumnDefinition
和RowDefinition
。
您应该为每个列添加ColumnDefinition
一个 ,并为每个行添加RowDefinition
一个。< / p>
答案 1 :(得分:0)
将空ColumnDefinition / RowDefinition的MaxWidth设置为0。