C# 从WP7 C中的网格布局中删除空行

C# 从WP7 C中的网格布局中删除空行,c#,xaml,windows-phone-7,grid,C#,Xaml,Windows Phone 7,Grid,我创建了具有“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

我创建了具有“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);
        }
    }
}
未在网格中添加空值。这样就有了空列。它在空列中留出空间。 如何避免空列。 非常感谢您的帮助。

您应该这样做:

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。

将空ColumnDefinition/RowDefinition的MaxWidth设置为0。

您得到的结果是什么,您希望它是什么?您应该这样做:否则{j-;}@csharpwinphonexaml如果第五个值为空,则网格将离开第五列。我无法删除第五列,即空列。如果我使用testgrid.ColumnDefinitions.RemoveAt5;它抛出一个错误,就像指定的参数超出了有效值的范围一样。请帮助第五是4实际上是0=第一个1=第二个2=第三个3=第四个4=第五个元素这对你意味着什么?:网格离开第五列是的,我这样做了,如果我在第1列添加列,然后在第7列,这意味着在它们之间创建了一个空间。因此,必须修复scrollviewer才能看到最后一个位置。它使design-uglyi-dint为空值添加列,但网格中的空值列中有一个空间。