我的Silverlight动画有问题,我似乎无法解决。这个问题似乎已经很好地确定了,但是解决这个问题的技术似乎不适用于我的情况。

这是我用来为称为“ underGrid”的网格设置动画的情节提要代码。 underGrid是一个基本网格,我根据用户的鼠标输入对其应用比例和位置偏移,以便他们可以实时缩放和移动网格。下面的ResetGrid情节提要板简单地将当前比例尺和位置值动画化为比例尺{1,1}和位置{0,0},为用户重置视图。我希望每当用户单击“重置”按钮时都可以应用此动画,但是一旦运行了一次,它将冻结“缩放”和“平移”转换(如此处所述:http://msdn.microsoft.com/en-us/library/aa970493.aspx)。这意味着,当用户随后使用鼠标移动网格时,它不会移动。我已经尽一切努力阻止动画对依赖项属性产生影响。我尝试钩住Completed事件并尝试(除其他事项外),停止动画,将动画查找为0,在ResetGrid Children中循环并使用StoryBoard.SetTarget()。我也尝试过设置FillBehavior。无论我做什么都不起作用,Scale和Translation总是被点击,无法在用户代码中再次设置。

谁能建议我可以尝试的未列出的任何内容(严重或其他:))?我想要的是动画在Complete上完全停止并脱离自身。

情节提要XAML:

  <Storyboard x:Name="ResetGrid">
   <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="underGrid" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
    <EasingDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0">
     <EasingDoubleKeyFrame.EasingFunction>
      <CubicEase EasingMode="EaseInOut"/>
     </EasingDoubleKeyFrame.EasingFunction>
    </EasingDoubleKeyFrame>
   </DoubleAnimationUsingKeyFrames>
   <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="underGrid" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
    <EasingDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0">
     <EasingDoubleKeyFrame.EasingFunction>
      <CubicEase EasingMode="EaseInOut"/>
     </EasingDoubleKeyFrame.EasingFunction>
    </EasingDoubleKeyFrame>
   </DoubleAnimationUsingKeyFrames>
   <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="underGrid" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
    <EasingDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1">
     <EasingDoubleKeyFrame.EasingFunction>
      <CubicEase EasingMode="EaseInOut"/>
     </EasingDoubleKeyFrame.EasingFunction>
    </EasingDoubleKeyFrame>
   </DoubleAnimationUsingKeyFrames>
   <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="underGrid" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
    <EasingDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1">
     <EasingDoubleKeyFrame.EasingFunction>
      <CubicEase EasingMode="EaseInOut"/>
     </EasingDoubleKeyFrame.EasingFunction>
    </EasingDoubleKeyFrame>
   </DoubleAnimationUsingKeyFrames>
  </Storyboard>

最佳答案

ResetGrid.stop()将起作用吗?
我在应用程序中使用了它,动画立即被截断。
animation.stop将停止并重置,而animation.pause只会在其命中的时间轴上停止
如果不是,您可以放另一个持续时间为0的动画,
调用此动画放回属性

10-07 19:45
查看更多