我在窗口中有以下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的新手,所以细节会有很多帮助。
答案 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中很重要,如果直接设置,则触发器不会覆盖该值。