Почему бы не что-то вроде:
<ToggleButton x:Name="b">
<Image Src="myImage.png" Visibility="{Binding ElementName=b,Path=IsChecked,Converter="{StaticResource BooleanToVisibilityConverter}}"/>
<Image Src="myOtherImage.png" Visibility="{Binding ElementName=b,Path=IsChecked,Converter="{StaticResource BooleanToVisibilityConverter,ConverterParameter=Invert}}"/>
</ToggleButton>
Если у вас есть преобразователь логического значения в видимость, который может принимать параметр для инвертирования логического значения.
Редактировать:
ВыВам нужно определить конвертер, чтобы он мог преобразовать bool?
из свойства IsChecked
в перечисление Visibility
.Это то, что делает весь код привязки.Здесь есть базовая реализация здесь , которая преобразуется в Visibility.Visible
при значении true и Visibility.Collapsed
при значении false.Вам необходимо добавить проверку для parameter
, чтобы она инвертировала видимость при передаче Invert
(для переключения между двумя изображениями).
Другой способ сделать это - определить изображения в стилеи используйте визуальные состояния для Checked
и Unchecked
, чтобы перевернуть изображения.Вы можете применить стиль к нескольким кнопкам, но сложно варьировать изображения для каждой кнопки (что делает мое решение).
Это способ настройки ресурса
XAML
<!-- Place this in your window -->
xmlns:converters="clr-namespace:NameSpace"
<!-- Place this above your root UI -->
<Window.Resources>
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</Window.Resources>
Тогда используйте конвертер здесь BooleanToVisibilityConverter