C # заполнить динамическую сетку с TextBox, кнопки и многое другое в WPF - PullRequest
0 голосов
/ 11 декабря 2010
  • VS2010 -C # У меня есть TextBox, где вы можете ввести целое число, и UniformGrid динамически генерируется с целым числом ячеек UniformGrid. Теперь, если я хочу добавить TextBox в каждую ячейку UniformGrid, я делаю следующее (например, int это 5):

TextBox [] tb = new TextBox [5];
для (int i = 0; i <5; i ++) <br /> {
tb [i] = новое текстовое поле ();
UniformGrid1.Children.Add (ТБ [I]);
}

Хорошо, это работает нормально. Но проблема возникает, когда мне нужно заполнить еще несколько текстовых полей, кнопок и надписей с определенными свойствами дизайна, возможно, также вставить сетку в ячейку UniformGrid. Будет очень грязно, если я создам массивы для каждого элемента управления и определю свойства каждого массива в цикле. Мало того, что это грязно, я не могу поместить текстовое поле в сетку ячейки UniformGrid. Вместо этого дети добавляют сетку поверх TextBox.

Есть ли лучший способ приблизиться к этому?

Ответы [ 2 ]

2 голосов
/ 11 декабря 2010

Вместо этого следует использовать привязку данных.

Создайте ItemsControl, привязайте его к ObservableCollection и используйте UniformGrid в качестве контейнера для ItemsControl.

1 голос
/ 11 декабря 2010

Я думаю, что использование специализированных элементов управления, таких как DataGrid , было бы лучше, поскольку оно автоматически создает двусторонние привязки к модели, ее легко поддерживать и т. Д. Существует множество примеров, например здесь (Google может помочь вам найти больше, если вы спросите что-то вроде "учебник по wpf datagrid example")

...