Reputation: 19
I want to change image when TabItem is selected.
This is my XAML
<TabControl>
<TapItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<Image Source="aa.png"/>
<TextBlock>AA</TextBlock>
</StackPanel>
</TabItem.Header>
</TapItem>
When TabItem selected, I want to change from "aa.png" to "sel_aa.png".
Upvotes: 1
Views: 1035
Reputation: 1193
You can add triggers to your TabItem ControlTemplate
<Style TargetType="{x:Type TabItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
</Grid.RowDefinitions>
<Border Grid.Row="0" Name="Border">
<ContentPresenter Content="AA" VerticalAlignment="Center" Margin="5" HorizontalAlignment="Center" ContentSource="Header" />
</Border>
<Image Grid.Row="1" x:Name="Image"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="Border" Property="Background" Value="Red" />
<Setter TargetName="Image" Property="Image.Source" Value="sel_aa.png" />
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter TargetName="Border" Property="Background" Value="Green" />
<Setter TargetName="Image" Property="Image.Source" Value="aa.png" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
When your TabItem is selected a trigger is fired and the image source will change to sel_aa, when TabItem is not selected the image source will be aa.
Upvotes: 3