【发布时间】:2021-09-11 10:15:06
【问题描述】:
我的应用程序中有这个TabControl:
<TabControl Width="100" Height="100">
<TabControl.Resources>
<Style TargetType="{x:Type TabItem}" x:Key="TabItemStyle">
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Border x:Name="Chrome"
BorderBrush="Blue"
Background="Transparent">
<ContentPresenter ContentSource="Header"
Margin="0,0,0,3"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Selector.IsSelected" Value="True">
<Setter TargetName="Chrome" Property="BorderThickness" Value="0,0,0,3"/>
</Trigger>
<Trigger Property="Selector.IsSelected" Value="False">
<Setter TargetName="Chrome" Property="BorderThickness" Value="0,0,0,0"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>
<TabItem Style="{DynamicResource TabItemStyle}">
<TabItem.Header>
<Label Content="Tab 1" />
</TabItem.Header>
</TabItem>
<TabItem Style="{DynamicResource TabItemStyle}">
<TabItem.Header>
<Label Content="Tab 2" />
</TabItem.Header>
</TabItem>
</TabControl>
当我单击TabControl 中的选项卡时,选项卡标题下方会显示一条蓝线。
这不是重点,但我确信我拥有的样式会很有用。
标签标题中有标签。
我想根据以下内容更改标签的前景:
- 当标签被点击时,标签的前景应该是
Red。 - 标签未点击时,标签的前景应为
Gray。
我假设我可以使用ControlTemplate 中已有的触发器来确定何时单击了选项卡。
但我不知道我需要做什么才能在样式中相应地设置标签前景。
【问题讨论】:
标签: wpf xaml triggers controltemplate tabitem