2017-01-28 113 views
1

我第一次玩XAML ControlTemplates,並且正在用我正在處理的一個基本動畫玩一個奇怪的時間。WPF VisualState - 「按下」事件不會觸發

在下面的樣式中,Pressed visualstate絕對不會觸發ScaleTransform。如果我將Pressed更改爲Focused或MouseOver,則工作得很好。

我錯過了什麼?

 <Style x:Key="ButtonStyle" TargetType="{x:Type Button}"> 
      <Setter Property="VerticalContentAlignment" Value="Center" /> 
      <Setter Property="HorizontalContentAlignment" Value="Center" /> 
      <Setter Property="SnapsToDevicePixels" Value="True" /> 
      <Setter Property="BorderThickness" Value="1" /> 
      <Setter Property="BorderBrush" Value="{StaticResource Button.BorderBrush}" /> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type Button}"> 
         <Border x:Name="Button_Border" 
           Background="{StaticResource Button.BackgroundBrush}" 
           BorderBrush="{TemplateBinding BorderBrush}" 
           BorderThickness="{TemplateBinding BorderThickness}" 
           Padding="5,2,5,2" 
           CornerRadius="2"> 
          <Border.RenderTransform> 
           <ScaleTransform x:Name="Button_ScaleTransform" 
               CenterX="0.5" 
               CenterY="0.5" /> 
          </Border.RenderTransform> 
          <VisualStateManager.VisualStateGroups> 
           <VisualStateGroup> 
            <VisualState x:Name="Normal" /> 


            <VisualState x:Name="Pressed"> 
             <Storyboard> 
              <DoubleAnimationUsingKeyFrames Storyboard.TargetName="Button_Border" 
                     Storyboard.TargetProperty="RenderTransform.ScaleX"> 
               <EasingDoubleKeyFrame KeyTime="0:0:0.0" Value="0.9" /> 
              </DoubleAnimationUsingKeyFrames> 
              <DoubleAnimationUsingKeyFrames Storyboard.TargetName="Button_Border" 
                     Storyboard.TargetProperty="RenderTransform.ScaleY"> 
               <EasingDoubleKeyFrame KeyTime="0:0:0.0" Value="0.9" /> 
              </DoubleAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 


            <VisualState x:Name="MouseOver" /> 
            <VisualState x:Name="Focused" /> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 
          <ContentPresenter /> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

回答

1

我發現空的Focused事件,它在按鈕上僅在點擊時觸發,正在覆蓋Pressed事件。通過簡單地刪除空的Focused事件,Pressed事件開始工作。