wpf - 在 XAML 中使用图像向按钮添加鼠标悬停效果

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

<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>

它不工作。我需要做什么?请帮助我。

最佳答案

此时您的控件模板包含一个图像,因此您无法更改背景(通过触发器)。如果您想添加背景更改,则需要稍微扩展您的 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 的一部分可见。然后,当用户将鼠标悬停在按钮。您当然可以使用 ControlTemplate 做更多的事情来提供其他类型的视觉提示,但希望这能让您入门。

https://stackoverflow.com/questions/11808955/

相关文章:

.net - 在列表linq中选择重复项

css - 如何更改所选文本的不透明度?

asp.net - 在 c# asp.net 中执行查询

php - 本地主机的 Instagram redirect-uri 失败

fortran - '写;没有很多空格的语句

mongodb - 如何使用 C# 驱动程序中的 BsonSerializer 为 MongoDB

php - 如何在 preg_match_all php 中获取组的值?

php - Symfony2 与 CSRF token 的链接

sql-server - 如何在插入前将触发器写入散列值?

php - 如何通过PHP检测用户断开连接?