我已经在我的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设置标题高度,是否有任何建议?
答案 0 :(得分:1)
您在TabControl
和TabItem
之间产生了混淆。
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>
此致