У меня есть что-то это:
scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, shrinkAnimation);
scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, shrinkAnimation);
MyDialog.Show();
Анимации работают правильно параллельно (X и Y уменьшаются вместе), но потому что BeginAnimation
асинхронный вызов, Show()
метод выполняется, в то время как анимация все еще работает (предположить shrinkAnimation
выполнения в течение 1 секунды).
Как я могу ожидать анимаций для завершения перед вызовом Show()
?
Спасибо!
Вы можете использовать Раскадровка
с завершенным событием вместо метода 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();