开发者

Problem creating Silverlight Grid columns programmatically on WP7

I'm trying to create a user control which will allow me to pass in a list of column definitions and which will create a grid for me.

So far nothing is displaying. Here is the code:

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> gridColumnLi开发者_如何学运维st)
{
    // 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);
    }
}

I have tried increasing the row/column size and refreshing the grid.

This is the same as this earlier question but the answer did not fix my problem.

This is what it looks like on the phone

Problem creating Silverlight Grid columns programmatically on WP7


The problem is that you aren't actually adding the TextBlock elements into the visual tree. You need to add them to the Children collection on the mainGrid Grid element supplied to the BuildColumns method.

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.
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜