使用静态 TabItems 将集合绑定到 WPF TabControl
Bind a collection to a WPF TabControl with static TabItems
我有一个 TabControl
和几个静态 TabItems
。我现在正在尝试使用自定义 ItemTemplate
和 ContentTemplate
动态添加一些选项卡。
像这样:
<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>
我有一个 TabControl
和几个静态 TabItems
。我现在正在尝试使用自定义 ItemTemplate
和 ContentTemplate
动态添加一些选项卡。
像这样:
<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>