简体   繁体   English

使用 static TabItems 将集合绑定到 WPF TabControl

[英]Bind a collection to a WPF TabControl with static TabItems

I have a TabControl with a couple of static TabItems .我有一个TabControl和几个 static TabItems I am now trying to dynamically add some tabs with a custom ItemTemplate and ContentTemplate .我现在正在尝试使用自定义ItemTemplateContentTemplate动态添加一些选项卡。

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?有什么办法可以做到这一点?

You can use the CompositeCollection to combine your different sources:您可以使用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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM