选中选项卡后,如何更改TabControl的TabItem标题上的图像?

时间:2012-01-08 02:18:38

标签: c# wpf xaml

我在窗口中有以下TabControl,当选择这些标签时,我需要将图像分别更改为“awb-white.png”和“center-weighted-white.png”。 (当他们没有被选中时,回到白色)。最好的方法是什么?可以在XAML中完成吗?

<Window x:Class="WpfApplication6.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <TabControl>
        <TabItem>
            <TabItem.Header>
                <Image Source="images/awb-black.png" Stretch="None" />
            </TabItem.Header>
            <Grid />
        </TabItem>
        <TabItem>
            <TabItem.Header>
                <Image Source="images/center-weighted-black.png" Stretch="None" />
            </TabItem.Header>
            <Grid />
        </TabItem>
    </TabControl>
</Window>

我是WPF的新手,所以细节会有很多帮助。

1 个答案:

答案 0 :(得分:2)

使用Style标头的默认设置器,在Trigger上添加IsSelected,并为新标头创建另一个设置器。

<TabItem>
    <TabItem.Style>
         <Style TargetType="TabItem">
              <Setter Property="Header">
                  <Setter.Value>
                      <Image ...>
                  </Setter.Value>
              </Setter>
              <Style.Triggers>
                  <Trigger Property="IsSelected" Value="True">
                      <Setter Property="Header">
                          <Setter.Value>
                              <Image ...>
                          </Setter.Value>
                      </Setter>
                  </Trigger>
              </Style.Triggers>
         </Style>
    </TabItem.Style>
</TabItem>

由于这相当冗长,您可能希望从TabItem继承并将其放在Image.Sources template所在的默认bound两个自定义属性中,然后您只需要在你的实例上设置它们。

另请注意,由于precedence,默认值在setter中很重要,如果直接设置,则触发器不会覆盖该值。