2010-03-02 180 views
3

我的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> 

回答

0

将ResetGrid.stop()工作? 我在我的应用程序中使用它,动画被直接切断。 animation.stop将停止,复位,同时将animation.pause只停留在哪里时间表它击中 如果不是ü可以把时间0的另一个动画, 调用此动画放回