2

私はいくつかのTabItemsを持っています.TabItemsにはそれぞれ1つの画像とテキストブロックが含まれています. コードは次のとおりです。

<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

からのIsSelectedプロパティに到達しようとしていますが、通常の では実現できません。代わりに、を使用してプロパティにアクセスできるようにする必要があります。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 に答える