我有几个动画逐个运行,以创建某种过渡到下一页。最后一个动画(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线程中执行。 (这导致了打嗝,因为它很快就被执行了。)
答案 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);