动画完成事件被稍微提前触发

3

我有几个动画,按顺序运行以创建一些过渡到下一页的效果。最后一个动画(DoubleAnimation)是执行的最后一个动画。一旦动画完成,需要加载数据。在这种情况下,我使用Completed事件。 看起来这个事件会稍微早一点启动,并在这个最后一个动画中产生了一个小问题。有什么方法可以解决这个问题吗? 例如:

DoubleAnimation anim = new DoubleAnimation();
anim.To = 200; 
anim.Duration = new Duration(TimeSpan.FromSeconds(1)); 
anim.Completed += ((s,e) => { LoadData(); });
element.BeginAnimation(StackPanel.WidthProperty, anim);
< p > LoadData 函数正在操作用户界面,因此需要在 UI 线程中执行。(这导致了小小的停顿,因为它被执行得稍微有点早。)

1个回答

0

不确定它是否有助于您的情况,但您可以尝试先停止动画,然后设置动画元素的宽度,最后调用LoadData:

var anim = new DoubleAnimation
{
    To = 200,
    Duration = new Duration(TimeSpan.FromSeconds(1)),
    FillBehavior = FillBehavior.Stop
};

anim.Completed += (s, e) =>
{
    element.Width = anim.To.Value;
    LoadData();
};

element.BeginAnimation(FrameworkElement.WidthProperty, anim);

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