【问题标题】:WPF: The custom style is not working after changed the button background colorWPF:更改按钮背景颜色后自定义样式不起作用
【发布时间】:2020-03-12 04:49:47
【问题描述】:

单击按钮后,按钮的背景颜色将始终为红色。我希望“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;
        }

【问题讨论】:

    标签: wpf styles


    【解决方案1】:

    Trigger won't change Background 可能重复

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

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

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

    从技术上讲,您可以通过其他几种方式做到这一点,但这可能是最干净的。

    【讨论】:

    • 您好,谢谢您的解释。我找到了另一个解决方案:button.ClearValue(Button.BackgroundProperty);
    猜你喜欢
    • 2016-11-28
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 2015-06-04
    • 1970-01-01
    相关资源
    最近更新 更多