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