关键词:
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>
总结:必须用Setters设置背景色属性才可以满足要求