0

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

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

我将如何使它工作?

4

1 回答 1

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以防止这种情况发生。

于 2013-08-01T14:38:24.860 回答