我有这样的话:
scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, shrinkAnimation);
scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, shrinkAnimation);
MyDialog.Show();
动画并行正确运行(x和y缩小在一起),但由于BeginAnimation
是异步调用,因此Show()
方法在动画仍在运行时执行(假设为shrinkAnimation
运行1秒钟。
如何在致电Show()
之前等待动画完成?
谢谢!
答案 0 :(得分:4)
您可以使用具有已完成事件的Storyboard
,而不是BeginAnimation
方法。这是一个设置不透明度的例子,但它是相同的概念:
DoubleAnimation animation = new DoubleAnimation(0.0, new Duration(TimeSpan.FromSeconds(1.0)));
Storyboard board = new Storyboard();
board.Children.Add(animation);
Storyboard.SetTarget(animation, MyButton);
Storyboard.SetTargetProperty(animation, new PropertyPath("(Opacity)"));
board.Completed += delegate
{
MessageBox.Show("DONE!");
};
board.Begin();