WPF - привязка TabControl к свойству TabItem в наборе ObserverableCollection - PullRequest
0 голосов
/ 20 октября 2010

У меня есть ObservableCollection<Item>, и я хочу установить его как свойство ItemsSource для TabControl.Класс Item содержит свойство TabItem, которое возвращает System.Windows.Controls.TabItem.Я хочу, чтобы TabControl отображал TabItem s из коллекции.

(На самом деле, у класса "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 s DisplayMemberPath до "TabItem", но это не сработало.Мне не удалось заставить ItemTemplate и ContentTemplate фактически отобразить TabItem (я мог бы привязать к Заголовку и Содержанию TabItems соответственно, но это не то, что я хочу).

ЕслиЯ использовал ObservableCollection<TabItem> и установил ItemsSource, он отображает TabItem с, как вы ожидаете, но я не могу заставить его работать с этим дополнительным шагом.

Что я делаюнеправильно?Есть ли способ заставить это работать?

Ответы [ 2 ]

0 голосов
/ 20 октября 2010

Я думаю, что если вы избавитесь от класса Item и просто добавите TabItems, ваш код будет работать.Тем не менее, делая это таким образом, вы ограничиваете возможности стилей TabItems.

0 голосов
/ 20 октября 2010

Я думаю, вы должны использовать стиль, чтобы установить содержимое. У вас есть ItemContainerStyle, который поможет, как указано здесь: WPF TabControl Databinding

:)

...