2017-01-28 3 views
1

私はXAML ControlTemplatesを初めて使用しています。私が取り組んでいる1つの基本アニメーションには奇妙な時間があります。WPF VisualState - "Pressed"イベントは発生しません

以下のスタイルでは、Pressed visualstateは絶対にScaleTransformをトリガーしません。 Pressed to 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イベントが機能し始めました。

関連する問題