将鼠标悬停效果添加到XAML中带有Image的按钮

时间:2012-08-04 13:12:48

标签: wpf xaml button styles

我有一个带有Image的按钮,如下所示:

<Button Width="22" Height="22" Command="{Binding PreviousCommand}">                               
  <Button.Template>
    <ControlTemplate>
      <Image Source="C:\Users\abcdef\Desktop\Slide-To-Left-Arrow-24.png"></Image>                            
    </ControlTemplate>
  </Button.Template>
  <Button.InputBindings>
    <KeyBinding Key="Up" Command="{Binding PreviousCommand}" Modifiers="Alt+Shift" />
  </Button.InputBindings>
</Button>

我想将一些鼠标悬停在效果上以识别按钮是否可点击/可聚焦。 我尝试按如下方式添加触发器,但它不起作用:

<ControlTemplate.Triggers>
  <Trigger Property="IsMouseOver" Value="True"> 
    <Setter Property="Background" Value="Black" /> 
  </Trigger>
</ControlTemplate.Triggers>

它不起作用。我需要做什么?请帮帮我。

1 个答案:

答案 0 :(得分:7)

此时,您的控制模板仅包含的图像,因此您无需更改背景(通过触发器)。如果您想要添加后台更改,则需要稍微扩展ControlTemplate。尝试这样的事情:

<Button.Template>
  <ControlTemplate>
    <Grid x:Name="bg">
      <Image Margin="4" Source="C:\Users\dheeraj.dilip.awale\Desktop\Slide-To-Left-Arrow-24.png"></Image>
    </Grid>
    <ControlTemplate.Triggers>
        <Trigger Property="IsMouseOver" Value="True"> 
           <Setter Target="bg" Property="Background" Value="Black" /> 
        </Trigger>
     </ControlTemplate.Triggers>                            
  </ControlTemplate>
</Button.Template>

这只是一个非常简单的示例,说明如何利用上面显示的触发器。所有这一切都是在图片下添加Grid并在图片上添加Margin,以便Grid的一部分可见。然后,当用户将鼠标悬停在按钮上时,它会使用Target的{​​{1}}属性来指定Setter的{​​{1}}。您当然可以使用Background做更多其他类型的视觉提示,但希望这可以帮助您入门。