2

所以从这个免费软件中,我可以让自己成为我自己的地铁按钮,如下所示:

在此处输入图像描述

虽然图标是白色的,所以可能看不到它,我把它放在我的网格(用 XAML 编写)中: 在此处输入图像描述

在技​​术上它仍然是一个图像,所以我把它做成了按钮,这是一个将图像转换成按钮的代码:

<Button x:Name="Button_CreateAccount" Content="" HorizontalAlignment="Center" Height="65" Margin="0" Style="{StaticResource Button_CreateAccount}" Width="65" Click="Button_CreateAccount_Clicked"/>

看到我将它命名为“Button_CreateAccount”,添加一个 Clicked 事件处理程序“Button_CreateAccount_Clicked”,并使用自定义样式“{StaticResource Button_CreateAccount}”

它按我的预期工作,但与任何其他按钮不同,它在按下时不会闪烁并在释放时释放闪烁,这可能是因为它在技术上是一个图像。所以我认为我可以通过更改其样式以编程方式使其在被按下时“闪烁”。这是 Blend 在 Visual Studio 2012 中自动添加的未编辑样式:

<Style x:Key="Button_CreateAccount" TargetType="Button">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Grid>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Pressed"/>
                                <VisualState x:Name="Disabled"/>
                                <VisualState x:Name="PointerOver"/>
                            </VisualStateGroup>
                            <VisualStateGroup x:Name="FocusStates">
                                <VisualState x:Name="Focused"/>
                                <VisualState x:Name="PointerFocused"/>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Image Source="Assets/Icons_White/add_user.png" Stretch="Fill"/>
                        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

但是,我不会说 XAML 语言 :( 我不知道如何在按下后简单地更改图像背景的颜色。任何帮助将不胜感激,谢谢!

4

1 回答 1

3

首先,您应该使图像具有透明背景而不是绿色背景。之后不要使用您的样式并将您的按钮更改为

<Button x:Name="Button_CreateAccount" HorizontalAlignment="Center" 
        Height="65" Margin="0" Width="65" Click="Button_CreateAccount_Clicked"
        Background="Green">
    <Image Source="Assets/Icons_White/add_user.png" Stretch="Fill"/>
</Button>

从这里您将开始看到按下时的颜色变化。如果你想改变颜色,那么给按钮一个新的样式。最好的方法是使用 Visual Studio 或 Blend 并右键单击按钮(在设计视图或文档大纲中)并选择 Edit Template -> Edit a copy...

更改 Pressed VisualState 中的颜色以在按下按钮时更改颜色。

<VisualState x:Name="Pressed">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Border">
            <DiscreteObjectKeyFrame KeyTime="0">
                <DiscreteObjectKeyFrame.Value>
                    <SolidColorBrush Color="Blue"/>
                </DiscreteObjectKeyFrame.Value>
            </DiscreteObjectKeyFrame>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPressedForegroundThemeBrush}"/>
        </ObjectAnimationUsingKeyFrames>
    </Storyboard>
</VisualState>
于 2012-11-14T20:42:41.047 回答