如何在TabItem中设置标题样式?

时间:2016-06-26 15:13:07

标签: wpf

我已经在我的Window.Resource中创建了一个样式,其中包含所选TabItem的背景。我想要实现的是为TabItem标题设置自定义高度,这是我的样式:

<Window.Resources>
    <ResourceDictionary>
        <Style x:Key="CustomTabItem" TargetType="{x:Type TabItem}" BasedOn="{StaticResource MetroTabItem}">
            <Setter Property="Width" Value="Auto"/>
            <Setter Property="Background" Value="Transparent" />
            <Setter Property="Height" Value="Auto"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="TabItem">
                        <Border Name="Border" Background="Transparent">

                            <ContentPresenter x:Name="ContentSite"
                                        VerticalAlignment="Center"
                                        HorizontalAlignment="Left"
                                        ContentSource="Header"
                                        Margin="10,3">
                            </ContentPresenter>
                        </Border>

                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True" SourceName="Border">
                                <Setter TargetName="Border" Property="Background" Value="Gainsboro" />
                            </Trigger>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter TargetName="Border" Property="Background" Value="#FFC5C5C5" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ResourceDictionary>
</Window.Resources>

通常我会将样式添加到我的TabControl中,如下所示:

<TabItem Tag="Tab1" Style="{StaticResource CustomTabItem}">

我只想为具有CustomTabItem样式的所有TabControl设置标题高度,是否有任何建议?

1 个答案:

答案 0 :(得分:1)

您在TabControlTabItem之间产生了混淆。

TabControl有很多TabItem。

每个TabItem实际上都是一个标签。

所以解决方案是:

1将样式设置为所有TabControls的所有TabItem

应用样式的一种非常简单的方法是删除TabItem样式的x:Key属性,该样式将应用于所有TabItems

<!-- No x:Key="CustomTabItem" below   -->
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource MetroTabItem}">

2为TabControl的所有选项卡设置样式

<TabControl ItemContainerStyle="{DynamicResource TabItemStyle1}" >
  <TabItem Header="Hello">Hello content</TabItem>
  <TabItem Header="Goodye">Goodbye content</TabItem>
</TabControl>

每个TabItem设置样式

<TabControl>
  <TabItem  Style="{StaticResource CustomTabItem}" Header="Hello">Hello content</TabItem>
  <TabItem Header="Goodye">Goodbye content</TabItem>
</TabControl>

此致