2013-01-06 10 views
12

Mam animację przed zamknięciem głównego okna, jak pokazuje poniższy kod. Problem polega na tym, że StoryBoard.Completed nie strzela. Jakieś wskazówki, co to powoduje?WPF StoryBoard.Completed event not fireing

Kod

DoubleAnimation dblAnimX = new DoubleAnimation(1.0, 0.0, new Duration(TimeSpan.FromSeconds(0.5))); 
dblAnimX.SetValue(Storyboard.TargetProperty, this); 

DoubleAnimation dblAnimY = new DoubleAnimation(1.0, 0.0, new Duration(TimeSpan.FromSeconds(0.5))); 
dblAnimY.SetValue(Storyboard.TargetProperty, this); 

Storyboard story = new Storyboard(); 
Storyboard.SetTarget(dblAnimX, this); 
Storyboard.SetTarget(dblAnimY, this); 
Storyboard.SetTargetProperty(dblAnimX, new PropertyPath("RenderTransform.ScaleX")); 
Storyboard.SetTargetProperty(dblAnimY, new PropertyPath("RenderTransform.ScaleY")); 

story.Children.Add(dblAnimX); 
story.Children.Add(dblAnimY); 
story.Begin(this); 

story.Completed += (o, s) => { this.Close(); }; 

Odpowiedz

38

Dodaj Zakończono obsługi przed wywołaniem Begin:

story.Completed += (o, s) => Close(); 
story.Begin(this); 

Chyba przyczynę tego zachowania jest, że Zakończony obsługi jest właściwie podłączona do zegara obiekt, który jest tworzony podczas Begin. Zobacz sekcję Spostrzeżenia w Completed:

Chociaż obsługi zdarzeń wydaje się być związane z osi czasu, faktycznie rejestruje z zegarem stworzonej do tego czasu. Aby uzyskać więcej informacji na temat , zobacz Przegląd zdarzeń synchronizacji.

+0

Dziękujemy! Działa teraz –

+1

Dziękuję za to! To mi pomogło, a także wymagało, bym uderzył się w głowę i powiedział: "Duh!". :-) –