Проблема создания столбцов Silverlight Grid программно в WP7 - PullRequest
2 голосов
/ 21 февраля 2011

Я пытаюсь создать пользовательский элемент управления, который позволит мне передать список определений столбцов и который создаст для меня сетку.

Пока ничего не отображается.Вот код:

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

Я попытался увеличить размер строки / столбца и обновить сетку.

Это то же самое, что и этот предыдущий вопрос , ноответ не решил мою проблему.

Вот как это выглядит на телефоне

enter image description here

1 Ответ

4 голосов
/ 21 февраля 2011

Проблема в том, что вы на самом деле не добавляете элементы TextBlock в визуальное дерево.Вам необходимо добавить их в коллекцию Children элемента mainGrid Grid, поставляемого для метода BuildColumns.

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.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...