【发布时间】:2012-06-17 01:23:53
【问题描述】:
我在 ControlTemplate 中有一个 ContentPresenter,试图布局 TabItem。我希望标题内 TextBlock 的前景色在选择选项卡时更改颜色。我的模板如下:
<TabControl.Resources>
<Style TargetType="TabPanel">
<Setter Property="HorizontalAlignment" Value="Right" />
</Style>
<Style TargetType="TabControl">
<Setter Property="BorderThickness" Value="0,0,0,0"></Setter>
</Style>
<Style TargetType="TabItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<ContentPresenter x:Name="ContentSite"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header"
Margin="30,10,30,10"/>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="ContentSite" Property="TextBlock.Foreground" Value="DarkGoldenrod"></Setter>
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter TargetName="ContentSite" Property="TextBlock.Foreground" Value="Black"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>
不幸的是,触发器什么也没做。 SO 上的其他几篇帖子显示了一个看起来与我一模一样的Setter 标签,使用TargetName 确保我们只更改标题而不是整个标签。该属性被识别并编译,但没有任何反应。
到底发生了什么,我做错了什么?这让我发疯了好几个小时!
【问题讨论】:
标签: wpf controltemplate contentpresenter