7

我有这样的东西:

scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, shrinkAnimation);
scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, shrinkAnimation);
MyDialog.Show();

动画正确并行运行(x 和 y 一起缩小),但由于BeginAnimation是异步调用,因此该Show()方法在动画仍在运行时执行(假设shrinkAnimation运行 1 秒)。

如何在调用之前等待动画完成Show()

谢谢!

4

1 回答 1

4

您可以使用Storyboard具有已完成事件的 a 来代替该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();
于 2010-02-04T21:37:03.140 回答