Преименуване на ToggleButton Style - wpf, xaml

В прозореца си имам копче за оформление и се оформяМоят ResourceDictionary. Причината, поради която е в ResourceDictionary, е, че имам няколко или повече ToggleButton скоро, които трябва да имат един и същ вид.

<Style x:Key="Standardbutton" TargetType="{x:Type ToggleButton}">
<Setter Property="FontSize" Value="18" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="Resources/Standard_Button_Normal.png" />
</Setter.Value>
</Setter>
<Setter Property="Height" Value="56" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Border Name="border" BorderThickness="0" Padding="0,0" BorderBrush="DarkGray" CornerRadius="0" Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Left" VerticalAlignment="Center" Name="content" Margin="15,0,0,0"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="Resources/Standard_Button_Pressed.png" />
</Setter.Value>
</Setter>
<Setter Property="Foreground">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFF9CE7B" Offset="0"/>
<GradientStop Color="#FFE88C41" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

Сега този стил на ToggleButton има по подразбиране фон и също така, когато "IsChecked" е вярно, ще има различен фон (както можете да видите на моя XAML код по-горе).

Сега тези бутони за превключване трябва да имат икони + текст комбинирани, като това, което направих тук (съжалявам за моя куц XAML код)

<ToggleButton Style="{DynamicResource Standardbutton}" Margin="0,0,0,4">
<StackPanel Orientation="Horizontal">
<Image Source="Resources/scan_26x26.png" />
<TextBlock Text="Scan"/>
</StackPanel>
</ToggleButton>

Въпросът е, как мога да имам различна икона когато ToggleButton се проверява (IsChecked = True)?

Ето някои изображения, които могат да ви помогнат да разберете въпроса

Нормален стил на ToggleButton
въведете описанието на изображението тук
IsChecked = Истински стил
въведете описанието на изображението тук
Моята цел е да има различна икона, когато IsChecked = True
въведете описанието на изображението тук

Отговори:

13 за отговор № 1

Добавете двете изображения към шаблона за управление и ги свържете Visibility собственост към IsChecked собственост (използвайте IValueConverter да преобразувате от true / false в подходящо Visibility enum стойност).

<ToggleButton Style="{DynamicResource Standardbutton}" Margin="0,0,0,4">
<StackPanel Orientation="Horizontal">
<Image Source="Resources/scan_26x26.png"
Visibility="{Binding
RelativeSource={RelativeSource AncestorType=ToggleButton},
Path=IsChecked,
Converter={StaticResource BoolToVisibleConverter}}" />
<Image Source="Resources/anotherimage.png"
Visibility="{Binding
RelativeSource={RelativeSource AncestorType=ToggleButton},
Path=IsChecked,
Converter={StaticResource BoolToCollapsedConverter}}" />
<TextBlock Text="Scan"/>
</StackPanel>
</ToggleButton>

Използвах два преобразувателя BoolToVisibleConverter и BoolToCollapsedConverter, но можете също да използвате a ConverterParameter за да постигне същото.