在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
方法的mainGridGrid
元素上的子类
集合中
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.
}
}
棒 极 了效果很好。谢谢你,德里克。