2010-02-04 82 views
7

我有一些這樣的:WPF - 同步動畫

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

的動畫並聯正確運行(x和y一起收縮),但由於BeginAnimation是一個異步調用,而動畫是Show()方法被執行仍在運行(假設shrinkAnimation運行1秒)。

如何在致電Show()之前等待動畫完成?

謝謝!

+0

比小李的更容易的解決辦法是,以取代我的代碼最後一行: shrinkAnimation.Completed + = {委託MyDialog.Show(); }; – 2010-02-04 22:10:22

回答

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();