Wpf 如何将IsMouseOverProperty添加到样式

Wpf 如何将IsMouseOverProperty添加到样式,wpf,Wpf,在这里,我定制了一个圆形按钮。但是触发器中的属性不起作用。如果IsEnabled属性为false且IsMouseOver属性为true,我想将背景设置为红色 <Style x:Key="CircleButton" TargetType="Button"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Butt

在这里,我定制了一个圆形按钮。但是触发器中的属性不起作用。如果
IsEnabled
属性为false且
IsMouseOver
属性为true,我想将背景设置为红色

<Style x:Key="CircleButton" TargetType="Button">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid >
                    <Ellipse Stroke="#003878"
                 StrokeThickness="2" >
                        <Ellipse.Fill>
                            <RadialGradientBrush>
                                <GradientStop Offset="0"
                                  Color="#003878" />
                                <GradientStop Offset="1"
                                  Color="#003878" />
                                <GradientStop Offset="1"
                                  Color="#003878" />
                                <RadialGradientBrush.Transform>
                                    <TransformGroup>
                                        <ScaleTransform ScaleY="0.65" />
                                    </TransformGroup>
                                </RadialGradientBrush.Transform>
                            </RadialGradientBrush>
                        </Ellipse.Fill>
                    </Ellipse>
                    <ContentPresenter HorizontalAlignment="Center"
                          VerticalAlignment="Center"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="Foreground" Value="#FFFFFF" />
    <Setter Property="FontSize" Value="12" />
    <Setter Property="FontFamily" Value="Calibri"/>
    <Setter Property="BorderThickness" Value="0"/>
    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Background" Value="Red"/>
        </Trigger>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="Red"/>
        </Trigger>
    </Style.Triggers>
</Style>

触发器设置的背景颜色将被忽略,因为您已更改控件的模板。它不再是一个带有“背景”的标准按钮,而是一个带有自己属性集的椭圆

您需要的是改变椭圆填充颜色的触发器,如下所示:-

<ControlTemplate.Triggers>
    <Trigger Property="IsEnabled" Value="False">
        <Setter TargetName="ellipse" Property="Fill" Value="Red"/>
    </Trigger>
    <Trigger Property="IsMouseOver" Value="True">
        <Setter TargetName="ellipse" Property="Fill" Value="Red"/>
    </Trigger>
</ControlTemplate.Triggers>
<Ellipse x:Name="ellipse" Stroke=.... >

(我的示例仅更改椭圆的填充,因此您可能需要添加更多触发器,以使用相同的方法将笔划颜色更改为红色)。

Use@3615
IsMouseOver
在按钮被禁用时将不会激发为true。@Sam Roger,简单的多触发器将不起作用。我没有注意到触发属性的名称。抱歉。我不能将其标记为答案,因为我的声誉低于15。