这里用到属性触发器,当Button的IsMouseOver属性值为True时,我们对其样式进行修改,这里以修改Button背景色为例。
首先是启动后未触发时的效果图:
我一开始想到的就是直接修改其Background属性,代码如下:
<Button Height="30" Width="150" BorderBrush="{x:Null}" BorderThickness="0">
<Button.Style>
<Style TargetType="Button">
<Setter Property="Background" Value="#dd1144 "/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#3f48cc"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
但是实际运行效果没达到预期,鼠标停留在Button上时仍然是原来自带的样式ORZ(截图截不到鼠标。。。
然后我又做了一个尝试,修改了Button的Template属性,代码如下:
<Button Height="30" Width="150" BorderBrush="{x:Null}" BorderThickness="0">
<Button.Style>
<Style TargetType="Button">
<Setter Property="Background" Value="#dd1144 "/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Fill="#3f48cc"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
这次成功达到预期效果了:
转自:WPF | 修改鼠标停留在Button上时的Style - Nomyfan - 博客园 (cnblogs.com)