2010-02-15 4 views
2

J'ai un contrôle WPF ListBox qui affiche les éléments d'un flux RSS. Je vérifie parfois la source du flux RSS pour de nouveaux articles. Une fois que je détecte un nouvel élément, je l'ajoute à la collection observable qui ajoute immédiatement le nouvel élément à l'affichage ListBox.Effet de glissement lors de l'ajout de nouveaux éléments à un ListBox WPF

Y a-t-il un moyen de «glisser» le nouvel élément par le haut, en abaissant les éléments existants? Comment pourrais-je obtenir un tel effet? Peut-il être fait avec un ListBox, ou ai-je besoin de recourir à mon propre conteneur, comme un StackPanel et d'animer par exemple la Hauteur des contrôles nouvellement ajoutés par programmation?

Répondre

2

Cela peut être fait avec un ListBox. Utilisez le ItemContainerStyle pour styliser les ListBoxItems que la liaison crée pour vous: ce style peut inclure des animations, par ex. en ajoutant un EventTrigger pour l'événement Loaded aux Style.Triggers, et transforme. Par exemple, dans votre action de déclenchement, vous pouvez animer la Hauteur pour que l'élément se développe, ou si la hauteur est inconnue, votre style peut définir un ScaleTransform et animer le ScaleY de cette transformation de 0 à 1.

+0

Cela semble faisable, mais je suis en cours d'exécution dans des problèmes d'avoir Manchettes dans le storyboard (je liant à la propriété ISNEW donc je ne fais que Animer nouveaux éléments, et non pas tous les éléments lorsque la ListBox est chargée au départ) . –

+0

Je ne suis pas sûr de ce qu'est la propriété IsNew, mais cela ferait probablement partie d'un trigger plutôt que d'une liaison dans le storyboard; Cela dépend de comment vous le faites. Vous devrez poster plus de détails pour diagnostiquer le problème; mais je suggérerais dans un premier temps de mettre cela de côté et d'explorer la solution de Josh à la place (c'est beaucoup plus net), et de revenir à la mienne seulement si ça ne marche pas pour votre scénario. – itowlson

5

Je viens de poster une réponse à cette question qui est très similaire à la vôtre.

WPF how to animate a list of components

+0

Nice one - en utilisant un panneau d'animation à usage général, puis en le découpant dans via ItemsPanel, est parfaitement modulaire et magnifiquement idiomatique. Je vous remercie! – itowlson

Questions connexes