【问题标题】:WPF Button Content Image Onmouserover changeWPF 按钮内容图像 Onmouseover 更改
【发布时间】:2019-06-02 19:26:34
【问题描述】:

我使用 Button 的内容(不是背景)作为图像,并希望在鼠标悬停时设置另一个图像。我正在尝试将内容设置如下,但失败了。

<Button x:Name="Test" HorizontalAlignment="Left" VerticalAlignment="Top" Width="120" Margin="40,40,0,0" Height="120" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" BorderThickness="0" Click="Test_Click">
<Button.Content>
    <Image Source="Images/Test.png"></Image>                    
</Button.Content>
<Button.Style>
    <Style>
        <Style.Triggers>
            <Trigger Property="Button.IsMouseOver" Value="True">
                <Setter Property="Button.Content" Value=" <Image Source='Images/TestHover.png'></Image> " />
            </Trigger>
        </Style.Triggers>
    </Style>
</Button.Style>

【问题讨论】:

标签: wpf image button mouseover


【解决方案1】:

你可以试试控制模板吗

<Button Width="100" Height="100">
        <Button.Template>
            <ControlTemplate>
                <Image Name="image" Source="pack://application:,,,/images/1.png"/>
                <ControlTemplate.Triggers>
                    <Trigger  Property="Button.IsMouseOver" Value="true">
                        <Setter Property="Source" TargetName="image" Value="pack://application:,,,/images/2.png"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Button.Template>
    </Button>

【讨论】:

  • 我有很多这样的按钮,想在按钮本身内关联相关的鼠标悬停。
  • 我给了你一个想法。您可以在样式中定义控件模板,并使用 Datatrigger,您将从某些数据上下文(模型)等中绑定图像源。请检查 datatrigger 绑定的工作原理。
【解决方案2】:

这很容易!检查 IsMouseover 事件中的图像不是按钮。另外检查 this 以了解在 MouseOver 事件上更改图像的不同方法。

<Button Name="testBtn" Margin="10 0 0 0" Click="TestBtn_OnClick">
    <Button.Content>
        <Image>
            <Image.Style>
                <Style TargetType="{x:Type Image}">
                    <Setter Property="Source" Value="Resources/Apps-Dialog-Close-icon.png"/>
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Source" Value="Resources/basic-grid-with-center-lines-png-14.png"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Image.Style>
        </Image>
    </Button.Content>
</Button>

【讨论】:

  • 使用图像作为背景存在一些问题。请删除重复项。
  • 什么问题。我已经测试了我的解决方案。它正在工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-28
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多