Я пытаюсь показать другое изображение, когда кнопка отключена; я думал, что это будет легко с триггерами.
Однако я не смог заставить источник изображения переключаться на отключенное изображение, когда кнопка отключена. Я попытался установить, включает и изображение и кнопку. Что не так с тем, что я имею ниже? Как я могу изменить источник изображения, когда кнопка позволена/отключена?
<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>
Да, этот всплывает совсем немного.
Любое свойство, явно заданное в объявлении объекта, не может быть изменено в стиле. Итак, поскольку вы установили свойство 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>