Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在WP7上以编程方式创建Silverlight网格列时出现问题_Silverlight_Windows Phone 7_Grid - Fatal编程技术网

在WP7上以编程方式创建Silverlight网格列时出现问题

在WP7上以编程方式创建Silverlight网格列时出现问题,silverlight,windows-phone-7,grid,Silverlight,Windows Phone 7,Grid,我正在尝试创建一个用户控件,它允许我传入一个列定义列表,并为我创建一个网格 到目前为止,还没有任何进展。代码如下: List<GridColumn> colList = new List<GridColumn>(); GridColumn col1 = new GridColumn(200, "AAA"); colList.Add(col1); GridColumn col2 = new GridColumn(200, "BBB"); colList.Add(col2);

我正在尝试创建一个用户控件,它允许我传入一个列定义列表,并为我创建一个网格

到目前为止,还没有任何进展。代码如下:

List<GridColumn> colList = new List<GridColumn>();
GridColumn col1 = new GridColumn(200, "AAA");
colList.Add(col1);
GridColumn col2 = new GridColumn(200, "BBB");
colList.Add(col2);

BuildColumns(MainGrid, colList)


private void BuildColumns(Grid mainGrid, List<GridColumn> gridColumnList)
{
    // create grid columns
    foreach (GridColumn gridColumn in gridColumnList)
    {
        GridLength len = new GridLength(gridColumn.ColumnWidth);
        ColumnDefinition col = new ColumnDefinition {Width = len};
        mainGrid.ColumnDefinitions.Add(col);
    }

    // add 2 rows
    GridLength height = new GridLength(100);
    RowDefinition rowDef1 = new RowDefinition {Height = height};
    mainGrid.RowDefinitions.Add(rowDef1);
    RowDefinition rowDef2 = new RowDefinition {Height = height};
    mainGrid.RowDefinitions.Add(rowDef2);

    // add text blocks to cells
    int colNum = -1;
    foreach (GridColumn gridColumn in gridColumnList)
    {
        colNum++;
        TextBlock textBlock = new TextBlock();
        textBlock.Text = gridColumn.ColumnName;
        Grid.SetRow(textBlock, 0);
        Grid.SetColumn(textBlock, colNum);
    }
}
List colList=new List();
GridColumn col1=新的GridColumn(200,“AAA”);
colList.Add(col1);
GridColumn col2=新的GridColumn(200,“BBB”);
colList.Add(col2);
BuildColumns(主栅格、colList)
专用void BuildColumns(网格主网格、列表网格列列表)
{
//创建轴网柱
foreach(gridColumnList中的GridColumn GridColumn)
{
GridLength len=新的GridLength(gridColumn.ColumnWidth);
ColumnDefinition col=新ColumnDefinition{Width=len};
mainGrid.ColumnDefinitions.Add(col);
}
//添加2行
GridLength高度=新的GridLength(100);
RowDefinition rowDef1=新的RowDefinition{Height=Height};
mainGrid.RowDefinitions.Add(rowDef1);
RowDefinition rowDef2=新的RowDefinition{Height=Height};
mainGrid.RowDefinitions.Add(rowDef2);
//将文本块添加到单元格
int colNum=-1;
foreach(gridColumnList中的GridColumn GridColumn)
{
colNum++;
TextBlock TextBlock=新的TextBlock();
textBlock.Text=gridColumn.ColumnName;
Grid.SetRow(textBlock,0);
Grid.SetColumn(textBlock,colNum);
}
}
我已尝试增加行/列大小并刷新网格

这与相同,但答案并没有解决我的问题

这就是它在电话里的样子


问题在于,您实际上没有将
TextBlock
元素添加到可视化树中。您需要将它们添加到提供给
BuildColumns
方法的mainGrid
Grid
元素上的
子类
集合中

private void BuildColumns(Grid mainGrid, List gridColumnList)
{    
    // create grid columns    
    foreach (GridColumn gridColumn in gridColumnList)    
    {        
        GridLength len = new GridLength(gridColumn.ColumnWidth);        
        ColumnDefinition col = new ColumnDefinition { Width = len };        
        mainGrid.ColumnDefinitions.Add(col);    
    }    

    // add 2 rows    
    GridLength height = new GridLength(100);    
    RowDefinition rowDef1 = new RowDefinition {Height = height};    
    mainGrid.RowDefinitions.Add(rowDef1);    
    RowDefinition rowDef2 = new RowDefinition {Height = height};    
    mainGrid.RowDefinitions.Add(rowDef2);    

    // add text blocks to cells    
    int colNum = -1;    
    foreach (GridColumn gridColumn in gridColumnList)    
    {        
        colNum++;        
        TextBlock textBlock = new TextBlock();        
        textBlock.Text = gridColumn.ColumnName;        
        Grid.SetRow(textBlock, 0);        
        Grid.SetColumn(textBlock, colNum);
        mainGrid.Children.Add(textBlock);  // This line makes all the difference.
    }
}

棒 极 了效果很好。谢谢你,德里克。