在WPF中为TabItem创建样式

时间:2013-12-26 13:54:23

标签: wpf xaml

我想在我的TabControl的每个tabItem上显示图像和文本。

所以,我按如下方式创建了一个Style:

<TabControl.Resources>
    <Style TargetType="TabItem">
        <Style.Setters>
            <Setter Property="Header">
                <Setter.Value>
                    <StackPanel Orientation="Horizontal" Background="#FF2A2A2A" Margin="-7,-2" Cursor="Hand">
                        <Image Source="{Binding Tag}" Margin="10"/>
                        <TextBlock Text="{Binding Content}" FontSize="32"  Foreground="White" Margin="0,10,10,10"/>
                    </StackPanel>
                </Setter.Value>
            </Setter>
        </Style.Setters>
    </Style>
</TabControl.Resources>

现在在TabItem中:

<TabItem Tag="Images/Plus.png" Content="Create New" />

但是我没有在任何tabItems上看到任何标题??????

2 个答案:

答案 0 :(得分:1)

您需要使用RelativeSource向上移动Visual树以使您的属性绑定正常工作。 By default it will search for property in DataContext of Image and not on TabItem

<Image Source="{Binding Tag, RelativeSource={RelativeSource Mode=FindAncestor,
                             AncestorType=TabItem}}" Margin="10"/>

,同样适用于TextBlock

<TextBlock Text="{Binding Content, RelativeSource={RelativeSource 
                          Mode=FindAncestor, AncestorType=TabItem}}"
           FontSize="32"  Foreground="White" Margin="0,10,10,10"/>

答案 1 :(得分:0)

指定样式的名称

<TabControl.Resources>
    <Style x:Key="TabItemStyle" TargetType="{x:Type TabItem}">
        <Style.Setters>

并在TabItem中指示样式

<TabItem Tag="Images/Plus.png" Content="Create New" Style="{StaticResource TabItemStyle}" />