创建具有图像背景的按钮,在鼠标悬停和按下状态期间保持该按

时间:2014-05-09 15:00:23

标签: c# xaml windows-store-apps winrt-xaml

我正在使用一个背景为图像的按钮。我的问题是,每当我将鼠标指向按钮或单击按钮时,图像就会消失。

简而言之,我想设置悬停图像,按下按钮图像。

我的按钮代码是

<Button Height="47" VerticalAlignment="Top" Width="47" Foreground="{x:Null}" BorderBrush="{x:Null}" BorderThickness="0" ToolTipService.ToolTip="Emoticons" TabIndex="4" Margin="230,0,0,0">
                <Button.Background>
                    <ImageBrush ImageSource="ms-appx:/Assets/Emoticons/emo (3).png" Stretch="UniformToFill"/>
                </Button.Background>
</Button>

1 个答案:

答案 0 :(得分:3)

您遇到的问题是您设置了按钮的背景而不是内容。与背景属性不同,视觉状态的内容不变。

尝试更多类似的内容:

<Button Width="300" Height="400">
    <Image Source="Assets/Logo.scale-100.png" Stretch="UniformToFill"/>
</Button>

如果您想要更好地控制悬停和mousedown外观,可以使用找到的here样式覆盖PressedPointerOver视觉状态。

视觉状态也解释了为什么你的背景消失了。查看PointerOver的视觉状态:

<VisualState x:Name="PointerOver">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Border"
                                       Storyboard.TargetProperty="Background">
            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonPointerOverBackgroundThemeBrush}" />
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
                                       Storyboard.TargetProperty="Foreground">
            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonPointerOverForegroundThemeBrush}" />
        </ObjectAnimationUsingKeyFrames>
    </Storyboard>
</VisualState>

请注意,Background属性已设置为主题资源ButtonPointerOverBackgroundThemeBrush的动画。当控件处于PointerOver状态时,这将覆盖您设置背景的任何内容。