我有ObservableCollection<Item>
,我想将其设置为TabControl的ItemsSource
属性。 Item
类包含一个返回TabItem
的属性System.Windows.Controls.TabItem
。我希望TabControl显示集合中的TabItem
。
(实际上,“Item”类中有很多属性。)
代码:
项目类:
public class Item
{
public Item(TabItem tabItem)
{
this.TabItem = tabItem;
}
public TabItem TabItem { get; private set; }
}
TabControl XAML:
<TabControl x:Name="tabControl" />
代码背后:
this.tabControl.ItemsSource = new ObservableCollection<Item>()
{
new Item(new TabItem(){Header = "TabItem 1 Header", Content = "TabItem 1 Content"}),
new Item(new TabItem(){Header = "TabItem 2 Header", Content = "TabItem 2 Content"}),
new Item(new TabItem(){Header = "TabItem 3 Header", Content = "TabItem 3 Content"}),
new Item(new TabItem(){Header = "TabItem 4 Header", Content = "TabItem 4 Content"}),
new Item(new TabItem(){Header = "TabItem 5 Header", Content = "TabItem 5 Content"}),
};
我已尝试将TabControl
的{{1}}设置为“TabItem”,但这不起作用。我无法让DisplayMemberPath
和ItemTemplate
实际显示ContentTemplate
(我可以分别绑定到TabItem的标题和内容,但这不是我想要的)。< / p>
如果我使用TabItem
并将其设置为ObservableCollection<TabItem>
,则会显示ItemsSource
s,正如您所期望的那样,但我无法使用此附加步骤。
我做错了什么?有没有办法让这个工作?
答案 0 :(得分:0)
我认为您应该使用样式来设置内容。你有ItemContainerStyle,如下所述: WPF TabControl Databinding
:)
答案 1 :(得分:0)
我认为如果你摆脱了Item类并且只是添加了TabItems,你的代码就可以了。但是,通过这种方式,您可以限制使用TabItems的样式。