WPF:更改按钮背景颜色后,自定义样式不起作用



单击按钮后,按钮的背景色将始终为红色。我希望"isMouseOver"触发器仍能工作。

有人能帮我解决这个问题吗?

<Style TargetType="{x:Type Button}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="LightBlue"></Setter>
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Background" Value="LightGray"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
private void onClick(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
button.Background = Brushes.Red;
}

可能重复触发赢得';t更改背景

基本上,您在触发器中为background声明了样式值,但随后您在按钮的单击处理程序中设置了background的本地值。局部值将优先于样式值。

一个选项是更改IsPressed触发器的背景,而不是从您的点击处理程序中进行:

<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>

从技术上讲,你可以用其他几种方法来做到这一点,但这可能是最干净的。

相关内容

  • 没有找到相关文章

最新更新