Изменить фон ToggleButton
У меня есть кнопка:
<ToggleButton x:Name="btnEdit" Margin="8" Click="ToggleButton_Click" Height="Auto" Background="{x:Null}" Width="Auto" BorderBrush="{x:Null}" HorizontalAlignment="Left" >
<StackPanel Orientation="Horizontal">
<Image Source="{svgc:SvgImage Source=/Images/edit.svg, AppName = TimeTrees.Desktop}" Stretch="Fill" Width="25" Height="25" Margin="0,0,5,0"/>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">Edit</TextBlock>
</StackPanel>
</ToggleButton>
В коде я пытаюсь менять её фон:
private void ToggleButton_Click(object sender, RoutedEventArgs e)
{
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
mySolidColorBrush.Color = Color.FromRgb(255, 222, 89);
if (btnEdit.IsChecked == true) btnEdit.Background = mySolidColorBrush;
else btnEdit.Background = null;
}
То есть я хочу, чтобы при нажатой кнопке фон становился вот значением из rgb, а когда кнопка была не нажата, то его не было. Но установка цвета не перебивает стиль.
Как корректно изменить стиль кнопки, если она нажата?
Я нашел вот такой вариант, но у меня не создается template, да и он довольно громоздкий, а с wpf я только по сути знакомлюсь, тем более с фронтом. Поэтому прошу помощи, как же все-таки мне его изменить.
Ответы (1 шт):
Если вдруг кому пригодится мой код:
<Window.Resources>
<Style x:Key="CenterDataGridColumnsHeaders" TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
<Style TargetType="ToggleButton">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="18" ShadowDepth="5" Color="AntiqueWhite"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<ToggleButton Name="btnEdit" Margin="8" Click="ToggleButton_Click" Height="Auto" Background="{x:Null}" Width="Auto" BorderBrush="{x:Null}" HorizontalAlignment="Left" >
<ToggleButton.Template>
<ControlTemplate TargetType="{x:Type ButtonBase}">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ContentPresenter x:Name="contentPresenter"
ContentTemplate="{TemplateBinding ContentTemplate}"
Content="{TemplateBinding Content}"
ContentStringFormat="{TemplateBinding ContentStringFormat}"
Focusable="False"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}" RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsDefaulted" Value="True">
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="border" Value="{x:Null}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{x:Null}"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="border" Value="{x:Null}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{x:Null}"/>
</Trigger>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter Property="Background" TargetName="border" Value="{x:Null}"/>
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect Color="#ff0000" ShadowDepth="0" BlurRadius="20"></DropShadowEffect>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="border" Value="{x:Null}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" TargetName="border" Value="#FFF4F4F4"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FFADB2B5"/>
<Setter Property="Foreground" Value="#FF838383"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</ToggleButton.Template>
</ToggleButton>
Он очень похож на код, из ссылки, на которую я сослался в своем вопросе, но так как я и хотел получить такой результат - выкладываю свой код.
Там еще пару свойств, который мне мне были необходимы, возможно кому то будет также полезно.