Mouse_Leave中的背景正在发生变化,但Mouse_Enter

时间:2017-11-23 20:50:50

标签: c# wpf xaml

我刚刚进入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内放了一个断点,它肯定是在执行方法,只是不改变背景颜色。

如何解决?谢谢!

1 个答案:

答案 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">