如何阻止默认WPF覆盖鼠标悬停功能?

时间:2018-01-30 13:38:34

标签: c# wpf user-interface

在我的C#WPF应用程序中,我有3个按钮,每个按钮都在MainWindow构造函数中的InitializeComponent()函数之后分配了图像画笔背景。  当我将鼠标悬停在每个按钮上时,它们会变成纯蓝色。我想我需要为每个按钮添加MouseEnter方法,以及MouseLeave方法。悬停时将按钮更改为较暗的版本。

但悬停时图像仍然变为蓝色...请参阅MP4以获取解释

https://i.gyazo.com/06d936daaf5153c369b2b9af2faa1a9f.mp4

谢谢

Ĵ

1 个答案:

答案 0 :(得分:0)

您可以在按钮上使用以下样式来获得所需的结果,如果您需要在鼠标上使用另一种颜色,只需在下面的触发器中更改边框前景属性如果不希望任何鼠标超过效果,只需将前景更改为Transperent

<Style TargetType="Button">
     <Setter Property="OverridesDefaultStyle" Value="True"/>               
     <Setter Property="Template">
           <Setter.Value>
                   <ControlTemplate TargetType="Button">
                       <Border Name="border" 
                        BorderThickness="1"
                        Padding="4,2" 
                        BorderBrush="DarkGray" 
                        CornerRadius="3" 
                        Background="{TemplateBinding Background}">
                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                      </Border>
                <ControlTemplate.Triggers>
                       <Trigger Property="IsMouseOver" Value="True">
              <Setter TargetName="border" Property="Background" Value="Blue" />
                         </Trigger>
             </ControlTemplate.Triggers>
            </ControlTemplate>
         </Setter.Value>
       </Setter>
   </Style>