动画完成很快就会发生火灾

时间:2015-04-14 19:51:04

标签: c# wpf animation

我有几个动画逐个运行,以创建某种过渡到下一页。最后一个动画(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);

LoadData函数正在操纵UI,因此需要在UI线程中执行。 (这导致了打嗝,因为它很快就被执行了。)

1 个答案:

答案 0 :(得分: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);