[英]How to change button background when button is clicked using WPF
当我单击按钮时,这与我在 WPF 中更改按钮背景最接近。
<Trigger Property="IsPressed" Value="true">
<Setter TargetName="_Border" Property="Background" Value="#313131" />
</Trigger>
但是只要按下,使用 Property="IsPressed" 就会改变背景颜色。 我希望它在按下后保持颜色。
这是我的造型
<Style x:Key="Button_No_Light_Gray" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="_Border" Background="Red" Margin="1" BorderBrush="#202020">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" RecognizesAccessKey="True"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="_Border" Property="Background" Value="#313131" />
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter TargetName="_Border" Property="Background" Value="#313131" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我在 Stack overflow 上查看了与此类似的其他问题,但他们的解决方案对我没有用。 必须更改_Border的背景颜色。
我通过Click事件以不同的方式找到了解决方案。
首先,您需要将此添加到您的 XAML 代码中,如下所示
<Button Content="Content" Width="70" Height="50" Name="BtnColor" Click="BtnColor_Click"/>
然后,在你身后的代码中:
private void BtnColor_Click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
btn.Background = btn.Background == Brushes.Red ? (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFDDDDDD") : Brushes.Red;
}
注意:这将通过每次点击来回改变按钮的颜色。 希望这不是问题。
如果您不想这样,只需将 BrushConverter 的值设置为您需要的值即可。 例如,如果您希望它保持红色,只需 go
ConvertFrom("#FFFF0000") 而不是原来的样子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.