C#中的动画触发器(故事板+触发器)

时间:2015-06-08 14:42:24

标签: c# wpf xaml animation triggers

我使用 DoubleAnimationUsingKeyFrames 制作动画,我需要使用触发器打开动画的第一部分。我怎么能这样做?

 <Storyboard x:Key="TargetStoryboard">
     <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TargetArea" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
         <SplineDoubleKeyFrame KeyTime="00:00:0.0000000" Value="0.001"/>
         <SplineDoubleKeyFrame KeyTime="00:00:0.6000000" Value="1"/>
         <SplineDoubleKeyFrame KeyTime="00:00:3.6000000" Value="1"/>
         <SplineDoubleKeyFrame KeyTime="00:00:4.3000000" Value="0"/>     
     </DoubleAnimationUsingKeyFrames>

     <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TargetArea" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
         <SplineDoubleKeyFrame KeyTime="00:00:0.0000000" Value="-60"/>
         <SplineDoubleKeyFrame KeyTime="00:00:0.6000000" Value="-222"/>
         <SplineDoubleKeyFrame KeyTime="00:00:3.6000000" Value="-222"/>
         <SplineDoubleKeyFrame KeyTime="00:00:4.8000000" Value="3.35"/>   
     </DoubleAnimationUsingKeyFrames>
  </Storyboard>

它必须是这样的,但它不起作用。

<Storyboard x:Key="TargetStoryboard">
            <Trigger Property="dAnimTrigger" Value="True">
                <Trigger.EnterActions>
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TargetArea" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
                <SplineDoubleKeyFrame KeyTime="00:00:0.0000000" Value="0.001"/>
                <SplineDoubleKeyFrame KeyTime="00:00:0.6000000" Value="1"/>
                <SplineDoubleKeyFrame KeyTime="00:00:3.6000000" Value="1"/>
                <SplineDoubleKeyFrame KeyTime="00:00:4.3000000" Value="0"/>

            </DoubleAnimationUsingKeyFrames>
                </Trigger.EnterActions>
            </Trigger>
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TargetArea" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
                <SplineDoubleKeyFrame KeyTime="00:00:0.0000000" Value="-60"/>
                <SplineDoubleKeyFrame KeyTime="00:00:0.6000000" Value="-222"/>
                <SplineDoubleKeyFrame KeyTime="00:00:3.6000000" Value="-222"/>
                <SplineDoubleKeyFrame KeyTime="00:00:4.8000000" Value="3.35"/>

            </DoubleAnimationUsingKeyFrames>

        </Storyboard>

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

使用EnterActions和ExitActions内的beginstoryboard更改触发器

请查看以下代码:

<Trigger.EnterActions>
            <BeginStoryboard>
              <Storyboard>
                <DoubleAnimation Storyboard.TargetProperty="Opacity"
                  To="1" Duration="0:0:1" />
              </Storyboard>
            </BeginStoryboard>
          </Trigger.EnterActions>
          <Trigger.ExitActions>
            <BeginStoryboard>
              <Storyboard>
                <DoubleAnimation Storyboard.TargetProperty="Opacity"
                  To="0.25" Duration="0:0:1" />
              </Storyboard>
            </BeginStoryboard>
          </Trigger.ExitActions>          
        </Trigger>