【问题标题】:Problem creating Silverlight Grid columns programmatically on WP7在 WP7 上以编程方式创建 Silverlight Grid 列的问题
【发布时间】:2011-02-21 02:47:35
【问题描述】:

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

到目前为止,什么都没有显示。代码如下:

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);
    }
}

我已尝试增加行/列大小并刷新网格。

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

这就是手机上的样子

【问题讨论】:

    标签: silverlight windows-phone-7 grid


    【解决方案1】:

    问题在于您实际上并未将TextBlock 元素添加到可视化树中。您需要将它们添加到提供给BuildColumns 方法的ma​​inGrid Grid 元素上的Children 集合中。

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

    【讨论】:

    • 太棒了!效果很好。谢谢德里克。
    猜你喜欢
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多