2009-08-05 7 views
7

Ho un gruppo di UserControls WPF che attivano internamente alcune animazioni in seguito alle interazioni dell'utente. Tutte le animazioni hanno repeatbehavior = "true" e tutte le animazioni hanno la stessa durata. Ora vorrei sincronizzare tutte quelle animazioni su una timeline in modo che sbiadiscano dentro e fuori in sincronizzazione. Non importa quando l'utente ha attivato le animazioni. Ad esempio, se le animazioni durano tutti i 3 secondi e l'utente attiva la seconda animazione dopo 1.5 secondi, desidero comunque che le animazioni raggiungano il massimo allo stesso tempo. Forse posso definire una linea temporale globale in un dizionario di risorse globale che tutte le animazioni definite da qualche parte negli UserControls possano usare? Preferibilmente solo XAML.Più storyboard o animazioni che condividono la stessa sequenza temporale?

risposta

0

Basta aggiungere tutte le animazioni a un singolo TimelineCollection. Quindi aggiungi TimelineCollection al tuo Storyboard.Children. Quindi spareranno tutti contemporaneamente.

+0

AS I detto che le animazioni sono definite attraverso i miei usercontrols. Non penso che ci sia un modo per aggiungere animazioni che sono definite in diversi usercontrols alla stessa timeline. O forse c'è? – bitbonk

0

XAML: impossibile (per quanto ne so)

codice: CompositionTarget.Rendering

+1

Puoi approfondire come userò l'evento CompositionTarget.Rendering con le mie definizioni di animazione? – bitbonk

+0

Dovrai spostare l'animazione sul codice. Nell'evento Rendering, controllare quali animazioni devono essere in esecuzione e aggiornare manualmente le proprietà corrispondenti in base a una singola variabile del timer. Non è molto lavoro, solo alcune righe di SomeElement.SomeProperty = baseValue + rate * timePassed; – ima

Problemi correlati