当按钮被禁用时,我正试图显示不同的图像;我认为使用触发器会很容易。
然而,当按钮被禁用时,我无法让图像源切换到禁用的图像。我已经尝试在图像和按钮上设置触发器。我的下面有什么问题?如何在启用/禁用按钮时更改图像源?
<Button
x:Name="btnName"
Command="{Binding Path=Operation}"
CommandParameter="{x:Static vm:Ops.OpA}">
<Button.Content>
<StackPanel>
<Image
Width="24"
Height="24"
RenderOptions.BitmapScalingMode="NearestNeighbor"
SnapsToDevicePixels="True"
Source="/MyAssembly;component/images/enabled.png">
<Image.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=btnName, Path=Button.IsEnabled}" Value="False">
<Setter Property="Image.Source" Value="/MyAssembly;component/images/disabled.png" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</StackPanel>
</Button.Content>
</Button>
答案 0 :(得分:23)
是的,这个弹出了很多。
无法在样式中更改在对象声明中显式设置的任何属性。因此,您在图像声明中设置了图像的Source属性,样式的Setter将不会触及它。
请改为尝试:
<Image
Width="24"
Height="24"
RenderOptions.BitmapScalingMode="NearestNeighbor"
SnapsToDevicePixels="True"
>
<Image.Style>
<Style TargetType="Image">
<Setter Property="Source"
Value="/MyAssembly;component/images/enabled.png" />
<Style.Triggers>
... your trigger and setter ...
</Style.Triggers>
</Style>
</Image.Style>
</Image>