鼠标悬停触发器不能用于wpf按钮控制

时间:2017-01-30 04:57:12

标签: c# wpf

鼠标悬停触发器不能用于wpf按钮控制。我想在鼠标结束时更改按钮的背景和前景。

<Button.Style>
    <Style TargetType="{x:Type Button}">
        <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="{x:Type Button}">
            <Border Background="{TemplateBinding Background}" BorderBrush="Black" BorderThickness="1">
                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
            </Border>
         </ControlTemplate>
       </Setter.Value>
       <Style.Triggers>
          <Trigger Property="IsMouseOver" Value="True">
             <Setter Property="Background">
                <Setter.Value>
                    <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
                       <GradientStop Color="#FFF2E32F" Offset="0" />
                       <GradientStop Color="#FF45E815" Offset="1" />
                    </LinearGradientBrush>
                </Setter.Value>
             </Setter>
             <Setter Property="Foreground" Value="White"/>
        </Trigger>
      </Style.Triggers>
   </Style>
</Button.Style>
  

被修改

我添加了模板,但它只删除了按钮默认的MouseOver触发器,而不是我想要的前景和背景样式。

1 个答案:

答案 0 :(得分:2)

我从here找到了一个有效的解决方案。在按钮内定义样式,如下所示:

<Button.Style>
    <Style TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border Background="{TemplateBinding Background}" BorderBrush="Black" BorderThickness="1">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background">
                    <Setter.Value>
                        <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
                            <GradientStop Color="#FFF2E32F" Offset="0" />
                            <GradientStop Color="#FF45E815" Offset="1" />
                        </LinearGradientBrush>
                    </Setter.Value>
                </Setter>
                <Setter Property="Foreground" Value="White"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</Button.Style>