我的Silverlight动画有问题,我似乎无法修复。这个问题似乎已经确定,但用于解决问题的技术似乎并不适用于我的情况。删除Silverlight动画
下面是我用来为名为“underGrid”的网格设置动画的故事板代码。 underGrid是一个基础网格,我正在应用一个缩放和位置偏移来响应用户的鼠标输入,以便它们可以实时缩放和移动网格。下面的ResetGrid故事板仅根据当前比例和位置值回到比例{1,1}和位置{0,0}的动画,为用户重置视图。我希望能够在用户单击重置按钮时应用此动画,但一旦它运行一次就会冻结缩放和平移转换(如此处所述:http://msdn.microsoft.com/en-us/library/aa970493.aspx)。这意味着当用户使用鼠标移动网格时,它不会移动。我尝试了所有我能想到的方法来阻止动画对依赖项属性产生影响。我尝试过挂接Completed事件并尝试(除其他外),停止动画,将动画设为0,循环访问ResetGrid Children以及使用StoryBoard.SetTarget()。我也尝试设置FillBehavior ..不管我做什么都没有什么似乎有所作为,缩放和翻译总是被窃听,并且不能在用户代码中再次设置。
任何人都可以建议任何我可以尝试,我没有上面列出(激烈或其他:))?我想要的只是动画完全停止并将其自身分离到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>