Windows phone 8.1 在Windows Phone 8.1中按下按钮时更改按钮的外观

Windows phone 8.1 在Windows Phone 8.1中按下按钮时更改按钮的外观,windows-phone-8.1,imagebutton,Windows Phone 8.1,Imagebutton,我有一个Windows Phone 8.1 RT应用程序 我的页面上有一个图像按钮 我想要的是,当我按下这个按钮时,我要么将边框设置为黄色,要么/并更改图像 所以,在我看来,我只需要捕捉按键和基普事件 在keydown事件中,我设置了“影响” 在keyup中,我恢复到默认状态 唯一的问题是,当我为此运行/测试时,这些事件从未命中 这是我的标记: <Button Name="btn0" Width="75" Height="75"> <Bu

我有一个Windows Phone 8.1 RT应用程序

我的页面上有一个图像按钮

我想要的是,当我按下这个按钮时,我要么将边框设置为黄色,要么/并更改图像

所以,在我看来,我只需要捕捉按键和基普事件

在keydown事件中,我设置了“影响”

在keyup中,我恢复到默认状态

唯一的问题是,当我为此运行/测试时,这些事件从未命中

这是我的标记:

        <Button Name="btn0" Width="75" Height="75">
            <Button.Background >
                <ImageBrush ImageSource="ms-appx:///Images/0.png" Stretch="Uniform"/>
            </Button.Background>
        </Button>
//在我的页面的初始化事件中设置:

      btn0.KeyDown += btn0_KeyDown;
      btn0.KeyUp += btn0_KeyUp;
    void btn0_KeyUp(object sender, KeyRoutedEventArgs e)
    {
        lblTitle.Text = "btn0_KeyUp";  //never hit
    }

    void btn0_KeyDown(object sender, KeyRoutedEventArgs e)
    {
        lblTitle.Text = "btn0_KeyDown";  //never hit
    }
我需要做什么


谢谢

按键向下和按键向上是键盘事件。如果用户将键盘焦点设置为按钮并键入,则它们应该会被击中。这可能不是你想要的

要更改按钮按下时的外观,您需要编辑按钮的样式并修改其视觉状态。选择您的按钮,右键单击,然后选择编辑模板。。。要创建默认模板的副本,请转到默认模板并编辑该部分以进行所需的更改

要将边框更改为黄色添加到默认按下的处理,请将状态更改为以下内容:

<VisualState x:Name="Pressed">
    <Storyboard>
        <PointerDownThemeAnimation Storyboard.TargetName="Grid"/>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonPressedForegroundThemeBrush}"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Border">
            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonPressedBackgroundThemeBrush}"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush)" Storyboard.TargetName="Border">
            <DiscreteObjectKeyFrame KeyTime="0">
                <DiscreteObjectKeyFrame.Value>
                    <SolidColorBrush Color="Yellow"/>
                </DiscreteObjectKeyFrame.Value>
            </DiscreteObjectKeyFrame>
        </ObjectAnimationUsingKeyFrames>
    </Storyboard>
</VisualState>

有关可视状态的演练,请参见MSDN(在复选框上,但概念相同)


要做到这一点,最简单的方法是使用其视觉状态记录器混合编辑视觉状态。编辑模板,选择“状态”选项卡,然后设置要应用于该状态的属性。

非常有用,给了我很多要看的内容:)。我是WP8.1的新手,但希望快速入门。我从未使用过Blend-我见过它安装在我的菜单系统上。有没有通过IDE访问它的好方法?ThanksBlend是Visual Studio的一个独立应用程序。您可以通过在解决方案资源管理器中选择项目或文件并选择“在混合中打开…”从IDE启动它