Question

Scénario: J'ai une zone de texte (numérique), un bouton et une étiquette. Lorsque le bouton est cliqué, je voudrais l'étiquette de « animer » à la valeur numérique dans la zone de texte (comme un cadrant)

Vu:

a) que les animations dans les storyboards ne peuvent pas avoir DataBindings (parce qu'ils ne sont pas FrameworkElements) b) l'absence de déclencheurs dans Silverlight

Quelle est la meilleure, et moins couplage du modèle en vue de la story-board de la vue, de mettre à jour la valeur d'animation cible et démarrer l'animation lorsque le bouton est cliqué?

Remarque: Le scénario est conceptuel, il ne se concentre pas sur les détails des chiffres 'animating' ou quoi que ce soit

Était-ce utile?

La solution

Si votre objectif est strictement réduire le code-behind dans la vue, je pense qu'un comportement attaché sur l'étiquette travaillerait pour cela. Le comportement attaché sur l'étiquette exposerait le numéro à animer et quand ce nombre change d'une animation (en code) serait exécuté pour animer de l'ancienne valeur à la nouvelle valeur.

Un inconvénient est que l'animation est maintenant dans le code, à moins que vous stockez une version modélisée (juste a des valeurs fausses pour commencer) de celui-ci dans un fichier de ressources quelque part où vous pouvez le charger au besoin et remplacer les valeurs templated.

de Josh Smith semble être l'autorité sur les comportements attachés;

http://joshsmithonwpf.wordpress.com/ 2008/08/30 / Introduction-joint à des comportements /

Autres conseils

J'ai récemment pour résoudre un problème similaire dans une application MVVM. Mon problème était que je devais animer la hauteur d'un conteneur de zéro à auto. Depuis Auto est une valeur dynamique, je reconnais que l'animation (ou storyboard) devront être construits (ou manipulé) à la demande. La solution que je mets en place consistait à utiliser le code-behind vue de mettre à jour et tirer l'animation.

Ce n'est pas la plus approche MVVM conviviale; cependant, des animations dans WPF peut être difficile en XAML. Étant donné que cette solution est vraiment juste une solution pour une limitation de XAML il semble correct de lier le code directement à la vue. De même, si les vues ont été moquaient alors il n'y aurait pas d'éléments cadres pour animer, donc il serait vraiment pas judicieux de placer ce code sur le côté VM.

Quelqu'un at-il une meilleure approche?

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