如何将TextBlock与网格动态关联';s列

本文关键字:关联 动态 TextBlock 网格 | 更新日期: 2023-09-27 18:24:39

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

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")与我的Grid("grd")关联?

如何将TextBlock与网格动态关联';s列

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

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

附带说明一下,您实际上不需要将其设置为0,因为除非另有指定,否则Grid中的项将默认为Grid.Row=0Grid.Column=0

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

它应该是类似的东西

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

但我会先认真研究StackPanel和ListBox。它们似乎比网格更合适
您希望滚动的外观如何?