2013-01-06 12 views
12

Ho un'animazione prima di chiudere la finestra principale, come mostra il codice seguente. Il problema è che il StoryBoard.Completed non sta funzionando. Qualsiasi indizio che cosa sta causando questo?WPF StoryBoard.Evento non completato

Codice

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

risposta

38

aggiungere il gestore completato prima di chiamare Begin:

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

Credo che la ragione di questo comportamento è che il gestore Completato è in realtà attaccato a un orologio oggetto, che viene creato durante l'avvio. Vedere la sezione Osservazioni in Completed:

Anche se questo gestore di eventi sembra essere associato con una linea temporale, in realtà registra con l'orologio creato per questo timeline. Per ulteriori informazioni su , vedere la panoramica degli eventi di temporizzazione.

+0

Grazie! Funziona ora –

+1

Grazie per questo! Questo mi ha aiutato e mi ha anche costretto a colpirmi in testa e dire "Duh!". :-) –

Problemi correlati