当按钮被禁用时,我正试图显示不同的图像; 我认为触发器很容易.
但是,当禁用该按钮时,我无法让图像源切换到禁用的图像.我已经尝试在图像和按钮上设置触发器.我的下面有什么问题?如何在启用/禁用按钮时更改图像源?
<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>
Run Code Online (Sandbox Code Playgroud)
Mat*_*ton 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>
Run Code Online (Sandbox Code Playgroud)