移除Silverlight动画

3
我有一个关于Silverlight动画的问题,似乎无法解决。这个问题似乎已经被广泛讨论,但是用来解决它的技术在我的情况下似乎不起作用。
这里是我用来动画化名为“underGrid”的网格的故事板代码。 underGrid是一个基础网格,我正在对其应用比例和位置偏移,以响应用户的鼠标输入,使他们能够实时缩放和移动网格。下面的ResetGrid故事板只是从当前比例和位置值重新回到比例{1, 1}和位置{0, 0},为用户重置视图。我希望能够在用户单击重置按钮时应用此动画,但是它运行一次后会冻结比例和平移变换(如http://msdn.microsoft.com/en-us/library/aa970493.aspx所讨论的那样)。这意味着当用户然后使用鼠标移动网格时,它不会移动。我已经尝试了我能想到的一切来阻止动画对依赖属性产生影响。我尝试挂钩Completed事件并尝试(在其他事情中)停止动画,将动画寻找到0,循环遍历ResetGrid Children并使用StoryBoard.SetTarget()。我还尝试设置FillBehavior。无论我做什么都似乎没有任何区别,比例和平移始终被卡住,无法在用户代码中再次设置。

有人可以建议我尝试一些我没有列出来的东西吗(无论是激进还是其他方面)?我想要的只是动画在完成时完全停止并分离。

故事板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>
2个回答

0

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


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接