ContentPresenter触发器不起作用

4

我有一个ContentPresenter在ControlTemplate中,试图布局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>

很不幸,触发器什么也没做。Stack Overflow上的其他帖子显示了一个与我的Setter标记完全相同的标记,使用TargetName确保我们只更改标题而不是整个选项卡。该属性被识别并编译,但没有任何反应。

到底发生了什么事?我做错了什么?这已经让我抓狂了几个小时!

2个回答

3

知道了!

我的头部信息是这样的:

<TabItem.Header>
    <TextBlock>My Header</TextBlock>
</TabItem.Header>

问题在于,标题内已经有一个文本块(TextBlock),您不需要再次将文本包装起来。
<TabItem.Header>
    My Header
</TabItem.Header>

并且它能够正常运行。


1

在我的情况下完全按预期工作,你的问题可能出在其他地方...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接