按钮上的 IsMouseOver 属性 不工作

IsMouseOver Property on Button not working

我有这个按钮,如果我将鼠标悬停在它上面,我想更改设计。它不工作,我没有收到错误。 我究竟做错了什么? (我真的是 WPF 新手)

    <Button MaxWidth="180"
            Margin="5"
            DockPanel.Dock="Top"
            Padding="5"
            FontSize="12"
            Foreground="#1261AC"
            FontWeight="SemiBold"
            BorderBrush="Transparent">
        <Button.Style>
            <Style TargetType="Button">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="Button">
                            <Border CornerRadius="5" Background="LightGray" BorderThickness="1" Padding="5">
                                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="Foreground" Value="#157ec4"/>
                        <Setter Property="Background" Value="#000000"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>

按钮本身可以使用,但不会改变背景或字体的颜色。 (我例子中的颜色只是为了测试)

你的代码的问题是你直接定义了border-background为灰色。 现在您使用触发器更改控件背景。 但是,触发器设置的背景尚未与您的示例中的边框背景相关。我添加了一个模板绑定来为您解决此问题。现在模板中的边框将始终具有在您的样式中定义的背景,通过触发器设置或直接在 XAML.

中设置

请注意: 如果您使用 <Button Background="Pink"/> 在 XAML 中设置颜色,这将覆盖样式和触发器属性。

试试这件艺术品:

<Button Content="Hello there!"
    MaxWidth="180"
    Margin="5"
    DockPanel.Dock="Top"
    Padding="5"
    FontSize="12"
    Foreground="#1261AC"
    FontWeight="SemiBold"
    BorderBrush="Transparent">
<Button.Style>
    <Style TargetType="Button">
        <Setter Property="Background" Value="HotPink"></Setter>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border CornerRadius="5" Background="{TemplateBinding Background}" BorderThickness="1" Padding="5">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Foreground" Value="Red" />
                <Setter Property="Background" Value="Lime" />
            </Trigger>
        </Style.Triggers>
    </Style>
</Button.Style>