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

时间:2013-08-01 14:29:09

标签: 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.Background>
    <Button.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="ImageBrush.ImageSource" Value="Resources/Play 2.gif"></Setter>
        </Trigger>
    </Button.Triggers>
</Button>

但这给了我这个错误:Triggers collection members must be of type EventTrigger.

我将如何使其发挥作用?

1 个答案:

答案 0 :(得分:0)

这是正确的 - 你只能把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以防止这种情况发生,如评论中所示。