Home > database >  Bind a collection to a WPF TabControl with static TabItems
Bind a collection to a WPF TabControl with static TabItems

Time:02-04

I have a TabControl with a couple of static TabItems. I am now trying to dynamically add some tabs with a custom ItemTemplate and ContentTemplate.

Something like this:

<TabControl ItemsSource="{Binding DynamicTabs}">  
    <TabItem Header="Static 1">Content 1</TabItem>  
    <TabItem Header="Static2">Content 2</TabItem>
    <TabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Header}" />
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Content}" />
        </DataTemplate>
    </TabControl.ContentTemplate> 
</TabControl>

Is there any way to achieve this?

CodePudding user response:

You can use the CompositeCollection to combine your different sources:

<TabControl>
    <TabControl.Resources>
        <CollectionViewSource x:Key="DynamicTabsCollectionVS" Source="{Binding DynamicTabs}"/>
    </TabControl.Resources>
    <TabControl.ItemsSource>
        <CompositeCollection>
            <TabItem Header="Static 1">Content 1</TabItem>
            <TabItem Header="Static 2">Content 2</TabItem>
            <CollectionContainer Collection="{Binding Source={StaticResource DynamicTabsCollectionVS}}" />
        </CompositeCollection>
    </TabControl.ItemsSource>
    <TabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Header}" />
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Content}" />
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>
  •  Tags:  
  • Related