2010-02-04 32 views
7

Tôi có một cái gì đó này:WPF - đồng bộ hình ảnh động

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

Những hình ảnh động chạy một cách chính xác song song (x và y co lại với nhau), nhưng vì BeginAnimation là một cuộc gọi không đồng bộ, phương pháp Show() được thực hiện trong khi các hình ảnh động là vẫn chạy (giả sử shrinkAnimation chạy trong 1 giây).

Làm cách nào để đợi hình động hoàn thành trước khi gọi Show()?

Cảm ơn!

+0

Một giải pháp dễ dàng hơn của Mike sẽ được thay thế dòng cuối cùng của tôi về mã với: shrinkAnimation.Completed + = delegate {MyDialog.Show(); }; –

Trả lời

4

Bạn có thể sử dụng số Storyboard, trong đó có sự kiện đã hoàn thành thay vì phương thức BeginAnimation. Dưới đây là một ví dụ, thiết lập opacity, nhưng đó là khái niệm tương tự:

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(); 
Các vấn đề liên quan