2010-02-17 5 views
3

je la disposition suivante dans WPFWPF Grille/WrapPanel AutoSize animation

<grid> 
<row height=auto> 
<border> 
<listbox> 
<border? 
</row> 
<row height=*> 
<othercontent> 
</row> 
</grid> 

En utilisant MVVM et ont listbox ItemSource lié. J'utilise un wrapPanel dans la grille et le défilement est désactivé, de sorte que la hauteur de la ligne de grille augmente et diminue en fonction du contenu de la zone de liste. Tout cela fonctionne très bien. Ce que je voudrais, c'est pouvoir animer la croissance et le rétrécissement de la listbox (ou de la bordure qui la contient, ou de la ligne de grille qui a la hauteur automatique). Quel élément dois-je utiliser - un déclencheur sur SizeChanged sur la frontière?

Aussi je quand mes changements de ItemsSource, je voudrais que mes articles listbox à disparaître, le redimensionnement, puis les nouveaux éléments à fondu.

Toute aide très appréciée. Merci, Chris

+0

http://stackoverflow.com/questions/5230793/method-called-in-wpf-when-window-size-changes – user1834059

+0

"Les événements routés directs ne suivent pas une route, ils ne sont traités que dans le même élément sur Les événements routés directs prennent en charge d'autres comportements d'événements routés: ils prennent en charge une collection de gestionnaires accessibles et peuvent être utilisés comme EventTrigger dans un style. " - http://msdn.microsoft.com/fr-fr/library/system.windows.frameworkelement.sizechanged.aspx – user1834059

Répondre

0

Je pense que vous devriez créer votre propre WrapPanel. Peut-être existe-t-il déjà un contrôle tiers qui fait ce que vous voulez.

Vous ne savez pas comment cela a pu être fait. Mais un panneau d'emballage personnalisé. Lors du changement de taille, vérifiez s'il y a de la place pour l'article sur la ligne. Si c'est le cas, exécutez les storyboars qui animeront la position de l'objet.

Regardez également le gestionnaire d'état visuel. Si vous utilisez une mise en page fluide, vous pourrez animer des éléments qui ne sont pas animés. Comme déplacer un élément d'une colonne à une autre.

Vous ne savez pas si cela peut vous aider.

+0

J'ai trouvé ce lien. Peut-être que cela pourrait aider. http://blogs.msdn.com/b/dancre/archive/2006/02/23/537966.aspx – Michael