更改鼠标悬停时的背景颜色

Dim*_*tri 3 wpf xaml

我设法制作了一个圆形边框按钮,但是当鼠标悬停时我似乎无法更改其背景颜色。不透明度改变,但背景颜色不变。

<Style TargetType="Button" x:Key="FlatButtonStyle">
    <Setter Property="OverridesDefaultStyle" Value="True" />
    <Setter Property="Cursor" Value="Hand" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Border Name="border" BorderThickness="0" BorderBrush="Black" Background="{TemplateBinding Background}" CornerRadius="4">
                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                </Border>

            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="Orange"/>
            <Setter Property="Opacity" Value="0.91" />

        </Trigger>
    </Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)

如您所见,我不确定为什么不透明度有效,而另一个无效。但是,我认为这与实际按钮本身存在冲突:

<Button Style="{StaticResource FlatButtonStyle}" Content="Sign In" VerticalAlignment="Top" Margin="10,267,10,0" Background="#FF3650F3" Foreground="White" Height="29" Command="{Binding SignIn}">
Run Code Online (Sandbox Code Playgroud)

有没有办法覆盖这个?我要做的是创建一个通用的圆形按钮模板,将背景更改为橙色。但我希望能够设置默认背景,就像我在按钮中显示的那样。

adm*_*tDK 5

尝试这个

<Style TargetType="Button" x:Key="FlatButtonStyle">
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="{x:Type Button}">
            <Border Name="border" BorderThickness="0" BorderBrush="Black" Background="{TemplateBinding Background}" CornerRadius="4">
                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
            </Border>
<ControlTemplate.Triggers>
    <Trigger Property="IsMouseOver" Value="True">
        <Setter TargetName="border" Property="Background" Value="Orange"/>
        <Setter Property="Opacity" Value="0.91" />
    </Trigger>
</ControlTemplate.Triggers>
        </ControlTemplate>
    </Setter.Value>
</Setter>
Run Code Online (Sandbox Code Playgroud)

要直接通过其名称定位边界,但因为它在 ControlTemplate 内,最好将触发器移到那里。如果您像不透明度设置器那样省略名称,则它的切割器足以知道您针对的是按钮本身,因为它是该按钮的控制模板。因此,您可以针对单个组件以及按钮。