如何将TextBlock与Grid的列动态关联?

时间:2012-02-15 19:48:19

标签: c# wpf dynamic grid

我想动态创建1行网格并向其添加一些TextBlocks,将每个TextBlocks分配/关联到网格中的不同列。我有这个代码:

SolidColorBrush samHagar = new SolidColorBrush(Colors.Red);
System.Windows.Thickness mrg = new Thickness(2);

// Create a Grid
Grid grd = new Grid();
. . . // TODO: add columns
//...add the Grid to the StackPanel
spNufan.Children.Add(grd);

// Create TextBlock and dynamically add it  to the Grid
TextBlock tbDynamo = new TextBlock();
tbDynamo.Background = samHagar;
tbDynamo.TextWrapping = TextWrapping.Wrap;
//tbDynamo.Grid.Column = 0; <- no go, Joe!
tbDynamo.Margin = mrg;
tbDynamo.TextAlignment = TextAlignment.Left;
tbDynamo.VerticalAlignment = VerticalAlignment.Center;
tbDynamo.Text = "Whatever";
spNufan.Children.Add(grd);

如何将我的TextBlock(“tbDynamo”)与我的网格(“grd”)联系在一起?

3 个答案:

答案 0 :(得分:3)

设置对象的Grid.Column属性,然后将对象添加到Grid

Grid.SetColumn(tbDynamo, 0);
grd.Children.Add(tbDynamo);

作为旁注,您实际上不需要将其设置为0,因为Grid中的项目默认为Grid.Row=0Grid.Column=0,除非另有说明。

答案 1 :(得分:1)

应该是

// untested    
// spNufan.Children.Add(grd);  // already done earlier
grd.Children.Add(tbDynamo);
Grid.SetRow(tbDynamo, i);

但我会先认真研究StackPanel和ListBox。它们似乎比网格更合适 你想如何看待滚动?

答案 2 :(得分:1)

您需要使用Grid.SetColumn(tbDynamo, 0);