2009-08-05 6 views
7

J'ai un tas de UserControls WPF qui déclenchent en interne des animations sur les interactions de l'utilisateur. Toutes les animations ont repeatbehavior = "true" et toutes les animations ont la même durée. Maintenant, je voudrais synchroniser toutes ces animations sur une ligne de temps afin qu'elles se fanent dans et hors de synchronisation. Peu importe quand l'utilisateur a déclenché les animations. Par exemple, si les animations durent toutes 3 secondes et que l'utilisateur déclenche la seconde animation 1,5 secondes après la première, je veux quand même que les animations atteignent leur maximum en même temps. Peut-être que je peux définir une ligne de temps globale dans un dictionnaire de ressources global que toutes les animations définies quelque part dans les UserControls peuvent utiliser? De préférence XAML seulement.Scénarimages ou animations multiples partageant le même scénario?

Répondre

0

Ajoutez simplement toutes vos animations à un seul TimelineCollection. Puis ajoutez cette TimelineCollection à votre Storyboard.Children. Ensuite, ils vont tous tirer en même temps.

+0

AS I dit que les animations sont définies tout au long de mes commandes userc. Je ne pense pas qu'il existe un moyen d'ajouter des animations qui sont définies dans différents contrôles userc à la même timeline. Ou peut-être qu'il y en a? – bitbonk

0

XAML: impossible (pour autant que je sache)

code: CompositionTarget.Rendering

+1

Pouvez-vous élaborer sur la façon dont j'utiliserais l'événement CompositionTarget.Rendering avec mes définitions d'animation? – bitbonk

+0

Vous devrez déplacer l'animation au code. Dans l'événement Rendu, vérifiez quelles animations doivent être en cours d'exécution et mettez à jour manuellement les propriétés correspondantes en fonction d'une variable de minuteur unique. Ce n'est pas beaucoup de travail, juste quelques lignes de SomeElement.SomeProperty = baseValue + rate * timePassed; – ima

Questions connexes