2013-01-06 21 views
1

我想让我的按钮(我定义一个ControlTemplateButton)来触发我的动画,当鼠标点击(按钮和鼠标左键)。这是因为Button没有VisualStateMouseUp,但只有Pressed谈到点击。如何在WPF中为MouseUp添加触发器?

我想让我的动画在没有我按住按钮的情况下执行,我只想点击并释放。

这里是我的代码(你可以看到,我把,但它并没有任何影响!

<Window.Resources> 
    <Style x:Key="ButtonStyle1" TargetType="Button"> 
     <Setter Property="HorizontalAlignment" Value="Stretch" /> 
     <Setter Property="VerticalAlignment" Value="Stretch" /> 
     <Setter Property="HorizontalContentAlignment" Value="Center" /> 
     <Setter Property="VerticalContentAlignment" Value="Center" /> 
     <Setter Property="BorderThickness" Value="1" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Button"> 
        <Border x:Name="BorderOfTemplate" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" RenderTransformOrigin=".5,.5"> 
         <Border.Triggers> 
          <EventTrigger RoutedEvent="Click"> 
           <BeginStoryboard> 
            <Storyboard> 
             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="AnimatedScaleTransform" Storyboard.TargetProperty="ScaleX" Duration="0:0:3" RepeatBehavior="1x"> 
              <LinearDoubleKeyFrame KeyTime="0:0:3" Value=".1" /> 
              <SplineDoubleKeyFrame Value="1" KeyTime="0:0:3" /> 
             </DoubleAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="AnimatedScaleTransform" Storyboard.TargetProperty="ScaleY" Duration="0:0:3" RepeatBehavior="1x"> 
              <LinearDoubleKeyFrame KeyTime="0:0:3" Value=".1" /> 
              <SplineDoubleKeyFrame Value="1" KeyTime="0:0:3" /> 
             </DoubleAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="AnimatedTranslateTransform" Storyboard.TargetProperty="Y" Duration="0:0:3" RepeatBehavior="1x"> 
              <LinearDoubleKeyFrame Value="-170" KeyTime="0:0:2" /> 
              <SplineDoubleKeyFrame Value="1" KeyTime="0:0:3" /> 
             </DoubleAnimationUsingKeyFrames> 
            </Storyboard> 
           </BeginStoryboard> 
          </EventTrigger> 
         </Border.Triggers> 

         <Border.RenderTransform> 
          <TransformGroup> 
           <RotateTransform x:Name="AnimatedRotateTransform" /> 
           <ScaleTransform x:Name="AnimatedScaleTransform" /> 
           <TranslateTransform x:Name="AnimatedTranslateTransform" /> 
          </TransformGroup> 
         </Border.RenderTransform> 

        <here some VisualStateManager> 
        </here some VisualStateManager> 
enter code here 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 

感谢

回答

0

this article,Silverlight的普通EventTrigger只支持Loaded事件。

但是,使用EventTriggerSystem.Windows.Interactivity,似乎你可以使用其他事件,例如点击MouseLeftButtonUp。看到这篇文章为例:codeproject.com