2

我有 2 个按钮,一个应该在鼠标悬停时更改背景颜色。当鼠标悬停时,另一个人也应该保留他的背景图像。

我的问题是第二个也获得了鼠标悬停效果并且图像被覆盖:(

    <Window.Resources>
      <Style x:Key="hover" TargetType="Button">
        <Setter Property="Background" Value="#FF2598CE" />
        <Style.Triggers>
             <Trigger Property="IsMouseOver" Value="True">
                 <Setter Property="Background" Value="#FF24779D" />
             </Trigger>
        </Style.Triggers>
      </Style>
    </Window.Resources>

1.按钮

<Button Content="0" Name="num0" Foreground="White" Background="#FF2598CE" BorderBrush="#FF24779D" Style="{StaticResource hover}" />

2.按钮

<Button Content="" Name="up" BorderBrush="#FF24779D">
    <Button.Background>
       <ImageBrush ImageSource="/Rechner;component/Images/btn_up.jpg" />
    </Button.Background>
</Button>

谢谢你的帮助

4

1 回答 1

5

第二个按钮的默认模板意味着它的行为类似于 Windows 按钮(例如,鼠标悬停时不显示背景图像)。您可能需要提供自己的模板。

另一个问题中有一个很好的解释,可能会帮助您入门。

也可能有帮助。

我可能会做这样的事情:

<Button Content="" Name="up" Template="{DynamicResource BackgroundButton}" >
        <Button.Background>
            <ImageBrush ImageSource="image.png" />
        </Button.Background>
        <Button.Resources>
            <ControlTemplate x:Key="BackgroundButton" TargetType="Button">
                <Border Name="border" BorderThickness="1" BorderBrush="Black" Background="{TemplateBinding Background}">
                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Background" TargetName="border">
                            <Setter.Value>
                                <ImageBrush ImageSource="image.png" Opacity="0.5" />
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Button.Resources>
    </Button>
于 2013-08-16T09:08:47.103 回答