2010-12-26 2 views
8

Я динамически добавляю Tabitems в элемент управления Tab во время выполнения (на C#), и это работает нормально, но как я могу динамически добавлять элементы управления к новым Tabitems? Табиты должны быть динамическими, поскольку они зависят от того, сколько строк данных считывается из базы данных. Макет каждого Tabitem будет идентичным. БлагодаряWPF - добавление динамических элементов управления для динамически добавленного Tabitem?

ответ

2

The TabItem является контроль содержания, так что просто его содержания свойства быть любым типом элемента, который вы хотите отобразить (например, сетки, содержащих другие элементы и т.д.)

4

Используйте Content свойства нового TabItem, там вы можете установить что-нибудь, как строки или другие элементы управления WPF:

private void AddChildControl(TabItem tabItem) 
{ 
    StackPanel newChild = new StackPanel(); 
    tabItem.Content = newChild; 
} 
10

Если каждый TabItem будет иметь тот же формат, я бы просто создать UserControl, который включает в себя то, что вам нужно от макета и управления позицией, а затем место что в пределах TabItem.Content собственности.

Затем вы можете передать данные через представление объекта в свойство TabItem.DataContext, чтобы инициировать и использовать привязку.

TabItem item = new TabItem(); 
item.Content = new CustomUserControl(); 
item.DataContext = data; //where data is the data that 
         //comes from the database 
         //being represented in object form 
+0

Благодарим вас, я сейчас начинаю продвигаться. Поэтому, если в моем пользовательском контроле есть несколько элементов управления, вы говорите, что я могу передавать данные «все в один ход» в TabItem, упаковывая данные в объект? Предположительно, тогда в usecontrol можно было бы использовать метод, который я мог бы назвать? –

+0

@Paul Во многих словах да. В UserControl вы можете использовать DataBinding, так как когда вы установите DataContext TabItem, он будет каскадом вниз. Затем в UserControl ваши элементы управления могут привязываться к данным в DataContext. –

+0

Огромное спасибо Аарону за вашу помощь, еще один вопрос, каждый табитум идентичен, но я не уверен, что лучший контроль (ы) использовать. На каждой вкладке мне нужно отобразить «строки», представляющие каждую строку, считанную из базы данных. Каждая строка данных состоит из 3 текстовых полей, логических и целочисленных чисел в диапазоне 1-4, представляющих одно из 4 возможных изображений. Мне нужно отобразить текст, логическое значение (в флажке) и соответствующее изображение с некоторым подходящим элементом управления, с помощью которого можно изменить его. Могу ли я сделать это с помощью datagrid? –

Смежные вопросы