2012-11-14 74 views
2

所以從this免費軟件,我可以做我自己我自己的地鐵按鈕,如下圖所示:Windows 8 metro應用程序XAML - 使點擊時自定義按鈕閃爍?

enter image description here

圖標是白色的,所以可能看不到它正確的,我把它放在我的網格(寫在XAML)位置: enter image description here

不過它在技術上的形象,所以我把它做成按鈕,這裏的變換圖像的代碼放到按鈕:

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

看到我命名爲「Button_CreateAccount」,增加被點擊的事件處理程序「Button_CreateAccount_Clicked」,並使用自定義樣式「{StaticResource的Button_CreateAccount}」

它的工作原理如我所料,但不同於其他任何按鍵,也不會按下時閃爍並在釋放時釋放閃爍,可能是因爲它在技術上是圖像。所以我認爲我可以通過編程使其在被按下時通過改變其風格而「眨眼」。這是一個被混合在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語言被按下。任何幫助將深表感激,謝謝!

回答

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並右鍵單擊按鈕(在設計視圖或文檔大綱中)並選擇編輯模板 - >編輯副本...

更改壓入的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> 
+0

我很抱歉,但它顯示了一個奇怪的錯誤,一旦我試着按下按鈕:http://imgur.com/U2jBl –

+0

對不起,那是因爲我在的地方應該是幹什麼用的「藍」刷。看到更新的xaml –

+0

仍然沒有運氣,問題仍然存在 –

相關問題