Как я генерирую средства управления WPF через код

Попробуйте поместить document.getElementById в setTimeout()

Например.

setTimeout(function(){
    console.log(document.getElementById('whatever'));
}, 100);

Если это сработает, тогда это просто проблема синхронизации.

6
задан Ijas Ameenudeen 20 January 2019 в 13:54
поделиться

3 ответа

WPF использует броскую вещь, названную присоединенными свойствами. Таким образом в Вашем XAML Вы могли бы записать это:

<TextBlock Grid.Row="0" Grid.Column="0" />

И это эффективно переместит TextBlock в ячейку (0,0) из Вашей сетки.

В коде это выглядит немного странным. Я полагаю, что это было бы что-то как:

g.Children.Add(tb);
Grid.SetRow(tb, 0);
Grid.SetColumn(tb, 0);

Взгляните на ту ссылку выше - присоединенные свойства делают вещи действительно легкими сделать в XAML, возможно, за счет интуитивно выглядящего кода.

7
ответ дан 17 December 2019 в 00:17
поделиться

Местоположение ячейки является приложенным свойством - значение принадлежит TextBlock, а не Сетке. Однако, так как само свойство принадлежит Сетке, необходимо использовать или поле определения свойства или обеспеченные статические функции.

TextBlock tb = new TextBlock();
//
// Locate tb in the second row, third column.
// Row and column indices are zero-indexed, so this
// equates to row 1, column 2.
//
Grid.SetRow(tb, 1);
Grid.SetColumn(tb, 2);
0
ответ дан 17 December 2019 в 00:17
поделиться

Используйте присоединенные свойства класса Сетки.

в C#:

Grid.SetRow( cell, rownumber )

В XAML:

<TextBlock Grid.Row="1" />

Кроме того, я был бы совет, если Вы не используете динамические сетки, используйте язык разметки XAML. Я знаю, это имеет кривую обучения, но после того как Вы освоили его, настолько легче, особенно если Вы собираетесь использовать ControlTemplates и DataTemplates!;)

0
ответ дан 17 December 2019 в 00:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: