☰
WPF Border触发器不生效问题
2026/10/15 1:51:05 网站建设 项目流程

关键词:

WPF 触发器不生效 触发器使用 鼠标移入变色

目的:

鼠标进入Border后,此Border的背景色发生变化

错误写法:

<!--不设置背景的话只有在子控件上方才会触发事件--> <Border CornerRadius="5" > <Border.Style> <Style TargetType="Border"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="#828385" /> </Trigger> </Style.Triggers> </Style> </Border.Style> </Border>

不设置背景的话只有在子控件上方才会触发事件,是什么意思呢,如下图

只有鼠标在红色框框内才会触发背景色变化

加上背景色之后:

<Border CornerRadius="5" Background="Black" > <Border.Style> <Style TargetType="Border"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="#828385" /> </Trigger> </Style.Triggers> </Style> </Border.Style> </Border>

在定义后面设置属性:Background="Black"

这种情况会导致整个触发器失效,无论鼠标在哪里都不能改变背景色:

正确写法:

<!--不设置背景的话只有在子控件上方才会触发事件--> <Border CornerRadius="5" > <Border.Style> <Style TargetType="Border"> <!--必须在这里setter才可以生效--> <Style.Setters> <Setter Property="Background" Value="Black" /> </Style.Setters> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="#828385" /> </Trigger> </Style.Triggers> </Style> </Border.Style> </Border>

或者:

添加上边框线厚度>0

总结:
  • Background != null或

  • BorderBrush != null且BorderThickness > 0(即边框真的被绘制出来)

Border的整个矩形才会参与命中测试

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询