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。