2010-04-23 4 views
2

J'ai une question qui a été me tracasse depuis un certain temps:Quel est le comportement d'un déclencheur WPF 4 ControlStoryboardAction?

J'ai une opération longue IO que j'invoque de manière asynchrone, et je veux que mon interface utilisateur pour afficher un texte clignotant pour dire aux utilisateurs que le chargement des données.

J'ai un IsLoading propriété booléenne dans mon ViewModel, et j'ai utilisé un ControlStoryboardAction pour lancer l'animation clignotante, qui est définie pour répéter pour toujours. Pour mon déclencheur ControlStoryboardAction, j'ai configuré un déclencheur de données pour voir si IsLoading est vrai et démarrer mon storyboard si cela est vrai.

Mon problème est, quand mon opération d'E/S revient, et j'ai mis IsLoading à false, l'animation continue à jouer. Je pensais qu'une fois la condition de déclenchement évaluée à false, cela arrêterait l'animation?

J'ai ensuite ajouté un second ControlStoryboardAction pour arrêter l'animation si IsLoading a été évalué à false, mais cela n'a eu aucun effet. L'animation a continué à jouer après IsLoading était faux. Est-ce que quelqu'un peut m'expliquer comment le déclencheur fonctionne dans ControlStoryboardAction? Dans les déclencheurs de données normaux dans WPF, une fois la condition évaluée à false, la propriété reprendrait son état d'origine. Il semble que les déclencheurs dans les actions WPF ne fonctionnent pas de la même manière?

Répondre

0

En règle générale, un DataTrigger remettra les propriétés à leur valeur précédente lorsque la condition spécifiée n'est plus vraie.

La même chose n'est pas vraie pour les actions, cependant. Il n'y a aucun moyen pour le déclencheur de savoir quelle action "annulerait" l'effet de l'action déclenchée, en supposant qu'il existe même une telle action.

Je pense que ce que vous voulez faire est de définir un autre déclencheur à la condition inverse (par exemple, utiliser un convertisseur booléen sur IsLoading, ajouter une propriété IsNotLoading, etc.) qui exécute un "Stop" ControlStoryboardAction.

Questions connexes