2009-06-19 9 views
0

J'ai un déclencheur sur un storyboard pour mon listboxitem où le déclencheur est 'Loaded'. Il apparaît que chaque fois que la liste déroulante fait défiler l'élément obtient l'événement 'Loaded'. Je veux seulement que le storyboard s'exécute une fois, quand le listbox sera affiché.ListboxItem chargé plusieurs fois

J'ai supposé que l'événement Loaded ne serait déclenché qu'une seule fois.

Toute aide serait géniale.

Merci!

Répondre

1

Je ne sais pas si vous pouvez l'exécuter une seule fois ou non. La plupart du temps le ListBox utilise un VirtualizingStackPanel pour son ItemsPanel. Cela provoque uniquement les ListBoxItems visibles (ou presque visibles) à être créés et ajoutés à l'arborescence visuelle. Une fois que vous avez défilé, les éléments visibles sont détruits, puis les éléments nouvellement visibles sont créés. Chaque fois que vous faites défiler jusqu'à un élément, il est recréé et son événement Loaded se déclenche.

+1

VirtualizingStackPanel est le ItemsPanel par défaut pour ListBox. – micahtan

0

Vous pouvez essayer de définir VirtualizingStackPanel.IsVirtualizing = "False" pour votre listbox, cela devrait le faire. Sachez que cela consomme plus de ressources puisque les éléments seront toujours là, peu importe si vous les voyez dans la liste ou non. Cela ne devrait pas poser de problème si vous n'avez pas trop d'éléments dedans.