【问题标题】:Tab control's tab item header in wpf选项卡控制 wpf 中的 tabitem 标题
【发布时间】:2013-09-01 16:36:17
【问题描述】:

我在 WPF 窗口中有一个选项卡控件。 TabControl 的 Item 源在其视图模型中绑定到 ObservableCollection<UserControl>

那么如何设置我的 TabControl 的每个 TabItem 的标签页眉?

由于我的标签项类型是我的 UserControl 而不是 TabItem 我不能设置为:

((TabItem)Tabcontrol.Item[0]).Header="Something"

有人有解决办法吗?

我的TabControl 是:

<TabControl Name="TabControl" Grid.Row="1" 
            ItemsSource="{Binding TabCollection}"
            SelectedIndex="{Binding CurrentIndex}" />

【问题讨论】:

    标签: wpf user-controls observablecollection tabcontrol


    【解决方案1】:

    您需要为每个 TabItem 设置一个样式,该样式将绑定到您的用户控件上名为 Header 的属性。试试这个:

    <Style TargetType="{x:Type TabItem}">
        <Setter Property="Header" Value="{Binding Header}"/>
    </Style>
    

    添加到 tabitem 的每个控件都需要一个属性调用 Header。它不必在接口上声明,绑定就可以工作

    这是一个使用标签控件的完整示例。

    <TabControl Name="TabControl" Grid.Row="1" ItemsSource="{Binding TabCollection}"  SelectedIndex="{Binding CurrentIndex}"  >
            <TabControl.Resources>
                <Style TargetType="{x:Type TabItem}">
                    <Setter Property="Header" Value="{Binding Title}"/>
                </Style>
            </TabControl.Resources>
    </TabControl>
    

    样式由 WPF 自动应用。

    【讨论】:

    • 它没有更新我的用户界面。我将代码添加为 ................ ............. 我需要在任何地方提及我的用户控件的视图模型吗?
    • 一种或另一种方式,您想从视图模型中提取数据。如果视图模型是您的用户控件的数据上下文,请将绑定更改为 {Binding DataContext.Header}