Question

J'ai une simple application WPF qui contient un contrôle utilisateur qui est animé et par une paire de storyboards sur la fenêtre principale. J'Animer l'opacité de contrôle utilisateur, scaletransform.scalex et scaletransform.scaley à la pop dans et hors de vue. Il a l'air cool, sauf pour la première fois il fonctionne. L'animation est réglé pour prendre 3/10 de seconde, bien que je l'ai augmenté lors de mes tests. J'ai essayé de définir une valeur par défaut à une fraction de seconde pour voir s'il y a un problème où les valeurs des propriétés que je suis animant ne sont pas défaillants comme prévu. Cela n'a rien fait. J'ai même appeler explicitement mon animation « cacher » dans la fenêtre chargée de voir si cela me aider à mettre mes valeurs par défaut, mais cela ne fonctionne pas non plus. Y at-il une initialisation que le temps d'exécution fait la première fois que je tire l'animation? Est-il possible que je peux appeler explicitement ce genre d'initialisation avant d'afficher l'interface utilisateur? Le symptôme est que le contrôle est même pas visible jusqu'à environ 2/10 de seconde dans la première animation. Parfois, il est plus long et le contrôle montre après qu'il a été entièrement animé (opacité et la taille sont leurs valeurs finales quand il montre finalement).

Était-ce utile?

La solution

On dirait que vous définissez à droite DataContext du UserControl avant l'animation. Je présume que vous avez la liaison en cours, ce qui crée des objets visuels et en les ajoutant à l'arbre visuel en même temps l'animation est censé commencer. Cela nécessite un traitement que l'animation se bat. La façon d'éviter cela est d'avoir le contrôle instancié (avec DataContext set), mais caché, donc la création d'un objet visuel n'a pas besoin d'être effectuée au moment de l'animation. (Via mon collègue Tim Lee)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top