C# 鼠标悬停在按钮上时WPF更改图像

C# 鼠标悬停在按钮上时WPF更改图像,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,我试图在鼠标悬停在按钮上时更改图像,但它不起作用,这是我试图做的: <Button x:Name="Play" Content="" ClickMode="Press" BorderThickness="0" UseLayoutRounding="True" Height="120" Width="224"> <Button.Background> <ImageBrush ImageSource="Resources/Play 1.gif"/

我试图在鼠标悬停在按钮上时更改图像,但它不起作用,这是我试图做的:

<Button x:Name="Play" Content="" ClickMode="Press" BorderThickness="0" UseLayoutRounding="True" Height="120" Width="224">
    <Button.Background>
        <ImageBrush ImageSource="Resources/Play 1.gif"/>
    </Button.Background>
    <Button.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="ImageBrush.ImageSource" Value="Resources/Play 2.gif"></Setter>
        </Trigger>
    </Button.Triggers>
</Button>

但这给了我一个错误:
Triggers集合成员必须是EventTrigger类型。


如何使其工作?

这是正确的-您只能在其中放置EventTriggers。您需要将触发器移动到按钮的样式:

<Button x:Name="Play" Content="" ClickMode="Press" BorderThickness="0" UseLayoutRounding="True" Height="120" Width="224">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Background">
                <Setter.Value>
                    <ImageBrush ImageSource="..\Resources\Play 1.gif"/>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background">
                        <Setter.Value>
                            <ImageBrush ImageSource="..\Resources\Play 2.gif"/>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
         </Style>
    </Button.Style>
</Button>

我想是这样的(还没有测试过)


编辑:这会在正确的图像之间切换,但无法正常工作(它从Play 1.gif开始,转换为Play 2.gif,然后转换为按钮的基本颜色)。我认为您必须重写按钮的
ControlTemplate
,以防止发生这种情况,正如注释中所建议的那样。

可能重复或此:FrameworkElement.Triggers仅接受事件触发器。您可能需要覆盖按钮的ControlTemplate并在ControlTemplate.triggers中定义触发器。正如dowhilefor和Chris所说,有许多相同或相似的问题。嗯,背景的图像消失了,它不起作用了!我在测试后编辑了我的答案,使它稍微好一点,但它不能正常工作。很抱歉不过,它排除了一种可能性。这里的问题是,某些Windows主题的默认
按钮
模板基本上忽略了鼠标悬停时的
Background
。它通过在背景上方的可视树(通常是
边框
矩形
)中添加一个额外元素来更改鼠标上的按钮颜色。问题与触发器无关-即使您只是将背景设置为固定位图,而不尝试更改,背景也会变得模糊。(即使将纯色设置为背景也有同样的问题。)克里斯,你的建议-更改控件模板-是唯一的选择。