【问题标题】:Change image and textblock foreground on TabItem = IsSelected更改 TabItem = IsSelected 上的图像和文本块前景
【发布时间】:2013-11-02 09:39:04
【问题描述】:

我有一些 TabItem,每一个都包含一个图像和一个文本块。代码如下:

<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"/>

请分享您的意见。

谢谢。

【问题讨论】:

    标签: wpf xaml tabitem


    【解决方案1】:

    您正试图从TabItem.Header 访问TabItemIsSelected 属性,而这不能用普通的Trigger 完成。相反,您需要使用DataTrigger,以便您可以使用BindIsSelected 属性使用RelativeSource 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> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      相关资源
      最近更新 更多