选择Header
时,我需要更改TabItem
中TabControl
的{{1}}属性的FontWeight。我写了这段代码:
TabItem
此代码有效,但看起来过于庞大。
有没有办法在没有代码隐藏的情况下缩短此代码?
答案 0 :(得分:1)
<ContentPresenter>
是不必要的(signle TextBlock可以是模板的根项):减去4个标签
触发器可用于TabItem:减去另外4个标签
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock FontSize="18" Padding="5,0,0,0" Text="{TemplateBinding Content}"/>
</DataTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="TextElement.FontWeight" Value="SemiBold"/>
</Trigger>
</Style.Triggers>
</Style>
如果在选择后不适合制作整个标题SemiBold,那么请使用DataTemplate触发器:
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock x:Name="HeaderText" FontSize="18" Padding="5,0,0,0" Text="{TemplateBinding Content}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=TabItem}}" Value="True">
<Setter Property="TextElement.FontWeight" TargetName="HeaderText" Value="SemiBold"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>