使用静态 TabItems 将集合绑定到 WPF TabControl

Bind a collection to a WPF TabControl with static TabItems

我有一个 TabControl 和几个静态 TabItems。我现在正在尝试使用自定义 ItemTemplateContentTemplate 动态添加一些选项卡。

像这样:

<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>

有什么办法可以实现吗?

您可以使用 CompositeCollection 组合不同的来源:

<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>