2014-12-29 103 views
0

我有一个Windows Phone 8.1 RT应用程序。在Windows Phone 8.1中按下时更改按钮的外观

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

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

因此,在我看来,我只需要捕捉keydown和keup事件。

在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 
    } 

我需要做什么?

谢谢

回答

2

KeyDown和KeyUp是键盘事件。如果用户将键盘焦点设置为按钮和类型,它们应该会被击中。这可能不是你想要的。

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

要添加改变边境黄色的默认压制处理状态改变为以下几点:

<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的Specifying the visual behavior of a control为可视状态(在复选框的演练,但其概念是相同)

最简单的方法是使用其可视状态记录器编辑Blend中的视觉状态。编辑模板,选择“状态”选项卡,然后设置要为该状态应用的属性。

+0

非常丰富,给了我很多看看:)。我是WP8.1的新手,但想快速加速。我从来没有使用Blend - 我已经看到它安装在我的菜单系统上。有没有一种好的方式通过IDE访问它?谢谢 –

+1

Blend是Visual Studio的一个独立应用程序。您可以从IDE启动它,方法是在解决方案资源管理器中选择一个项目或文件,然后选择“Open in Blend ...” –

+0

谢谢v –