WPF - TabControl绑定到ObserverableCollection中的TabItem属性

时间:2010-10-19 20:10:11

标签: c# wpf tabcontrol

我有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”,但这不起作用。我无法让DisplayMemberPathItemTemplate实际显示ContentTemplate(我可以分别绑定到TabItem的标题和内容,但这不是我想要的)。< / p>

如果我使用TabItem并将其设置为ObservableCollection<TabItem>,则会显示ItemsSource s,正如您所期望的那样,但我无法使用此附加步骤。

我做错了什么?有没有办法让这个工作?

2 个答案:

答案 0 :(得分:0)

我认为您应该使用样式来设置内容。你有ItemContainerStyle,如下所述: WPF TabControl Databinding

:)

答案 1 :(得分:0)

我认为如果你摆脱了Item类并且只是添加了TabItems,你的代码就可以了。但是,通过这种方式,您可以限制使用TabItems的样式。