2

我有一些 TabItems,每一个都包含一个图像和一个文本块。这是代码:

<TabItem.Header>
<ContentControl>
    <ContentControl.Template>
        <ControlTemplate>
            <StackPanel x:Name="sp" Orientation="Horizontal">
                <Image x:Name="img" Source="img0.png"/>
                <TextBlock x:Name="tb" Text="Tab1" VerticalAlignment="Center" Foreground="Green"/>
            </StackPanel>
            <ControlTemplate.Triggers>
                <Trigger Property="TabItem.IsSelected" Value="True">
                    <Setter TargetName="img" Property="Source" Value="img1.png" />
                    <Setter TargetName="tb" Property="Foreground" Value="Red" />
                    <Setter Property="FontWeight" Value="Bold"/>
                </Trigger>
                <Trigger SourceName="sp" Property="IsMouseOver" Value="True">
                    <Setter TargetName="img" Property="Source" Value="img1.png" />
                    <Setter TargetName="tb" Property="Foreground" Value="Red" />
                    <Setter Property="FontWeight" Value="Bold"/>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </ContentControl.Template>
</ContentControl>

我想要实现的是在选择 TabItem 时更改图像的源和文本块的前景值。IsMouseOver 行为正常,但 TabItem.IsSelected 未按预期工作。基本上这段代码没有做我认为它应该做的事情:

<Trigger Property="TabItem.IsSelected" Value="True">
<Setter TargetName="img" Property="Source" Value="img1.png" />
<Setter TargetName="tb" Property="Foreground" Value="Red" />
<Setter Property="FontWeight" Value="Bold"/>

请分享您的意见。

谢谢你。

4

1 回答 1

0

您正试图从 the中获得IsSelected属性,而这是普通的. 相反,您需要使用 a以便您可以使用 a 来访问该属性:TabItemTabItem.HeaderTriggerDataTriggerBindIsSelectedRelativeSource Binding

<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=
    {x:Type TabItem}}}" Value="True">
    <Setter TargetName="img" Property="Source" 
        Value="/WpfApplication1;component/Images/Tulips.jpg" />
    <Setter TargetName="tb" Property="Foreground" Value="Red" />
    <Setter Property="TextElement.FontWeight" Value="Bold"/>
</DataTrigger> 
于 2013-11-02T01:39:04.427 回答