Как я могу динамически связать TextBlock со столбцом таблицы? - PullRequest
0 голосов
/ 15 февраля 2012

Я хочу динамически создать 1-рядную сетку и добавить к ней несколько текстовых блоков, назначая / связывая каждый из них с другим столбцом в сетке. У меня есть этот код:

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 ]

3 голосов
/ 15 февраля 2012

Установите свойство объекта Grid.Column, затем добавьте объект в сетку

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

В качестве примечания, вам на самом деле не нужно устанавливать его равным 0, поскольку элементы в Gridпо умолчанию будет Grid.Row=0 и Grid.Column=0, если не указано иное.

1 голос
/ 15 февраля 2012

Вам нужно использовать Grid.SetColumn(tbDynamo, 0);

1 голос
/ 15 февраля 2012

Это должно быть что-то вроде

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

Но я бы сначала серьезно посмотрел на StackPanel и ListBox.Они кажутся более подходящими, чем Сетка.
Как вы хотите, чтобы выглядела прокрутка?

...