WPF - синхронная анимация - PullRequest
7 голосов
/ 04 февраля 2010

У меня есть что-то такое:

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

Анимации выполняются правильно параллельно (x и y сокращаются вместе), но поскольку BeginAnimation является асинхронным вызовом, метод Show() выполняется во время работы анимации (предположим, shrinkAnimation выполняется в течение 1 секунды) .

Как мне дождаться завершения анимации, прежде чем звонить Show()?

Спасибо!

1 Ответ

4 голосов
/ 05 февраля 2010

Вы можете использовать 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();
...