2014-12-29 106 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 –