首先,我将列定义赋予了要动态创建网格的主网格:

public void create_grid()
{
  ColumnDefinition colDef11 = new ColumnDefinition();

  ColumnDefinition colDef22 = new ColumnDefinition();

  ColumnDefinition colDef33 = new ColumnDefinition();
  LayoutRoot.ColumnDefinitions.Add(colDef11);
  LayoutRoot.ColumnDefinitions.Add(colDef22);
  LayoutRoot.ColumnDefinitions.Add(colDef33);
}


然后创建网格:

for (int i = 0; i < 2; i++)
{
  for (int j = 0; j < 3; j++)
  {
    Grid mygrid = new Grid() { Height = 250, Width = 432 };
    mygrid.Background = new SolidColorBrush(Windows.UI.Colors.Aqua);

    string k = "gdr" + h ;
    mygrid.Name = k;
    _grid.Add(k, mygrid);
    tb_id_copy.Add(h);

    LayoutRoot.Children.Add(mygrid);

    Grid.SetColumn(mygrid, j);
    Grid.SetRow(mygrid, i);

    h++;
    r++;
  }
  RowDefinition rowDefj1 = new RowDefinition() ;
  LayoutRoot.RowDefinitions.Add(rowDefj1);
}


但是无论如何只能创建两行网格。总共创建了九个网格,但它们彼此重叠。

最佳答案

您的外部for循环显示for (int i = 0; i < 2; i++)。这只是两个值,在这里使用的是Grid.SetRow(mygrid, i);。同样,LayoutRoot.RowDefinitions.Add(rowDefj1);仅执行两次。

它应该是

for (int i = 0; i < 3; i++)

关于c# - 动态创建的网格不显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23407767/

10-12 12:52