我刚刚进入WPF。我有两个事件处理程序:
private void Mouse_Enter(object sender, MouseEventArgs e)
{
((Button)sender).Background = Brushes.Red;
}
private void Mouse_Leave(object sender, MouseEventArgs e)
{
((Button)sender).Background = Brushes.Black;
}
当鼠标进入按钮区域时,没有任何反应。但是,当离开按钮的区域时,按钮会变黑。我在Mouse_Enter
内放了一个断点,它肯定是在执行方法,只是不改变背景颜色。
如何解决?谢谢!
答案 0 :(得分:0)
这种情况正在发生,因为默认按钮模板中存在“内置”触发器,导致按钮忽略您在MouseEnter事件上更改其背景的尝试,您需要先编辑模板并禁用触发器,请按照以下步骤操作:
在Visual Studio编辑器中右键单击按钮并选择“编辑模板”,然后选择“编辑副本...”,根据需要为您的样式命名,并通过XAML查找名为“IsMouseOver”的触发器并删除2以下几行。
<ControlTemplate.Triggers>
<Trigger Property="IsDefaulted" Value="true">
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
--- Delete this line <Setter Property="Background" TargetName="border" Value="{StaticResource Button.MouseOver.Background}"/>
--- Delete this line <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.MouseOver.Border}"/>
</Trigger>
<Trigger Property="IsPressed" Value="true">