2009-12-29 12 views
1

En fait, j'utilise un contrôle d'éléments et l'animation des enfants de celui-ci. Le problème est lors de l'ajout dynamique des éléments via la méthode Add() le premier élément n'est pas animé et vient à afficher comme d'habitude.Est-il possible d'obtenir une notification lors de l'ajout d'éléments dans ItemsControl en utilisant la méthode Add() dans WPF

J'ai prévu de cacher l'enfant ajouté dynamiquement et de le rendre visible plus tard quand je veux l'utiliser avec une animation et de cette façon je peux l'afficher avec l'animation.

Pour masquer l'enfant lorsqu'il est ajouté dynamiquement, j'ai besoin d'une sorte de notification ou d'un événement déclenché pour la méthode Add() !. J'ai essayé d'utiliser InotifyCollectionChanged mais cela n'a pas fonctionné.

Vos pensées s'il vous plaît .. Vos suggestions alternatives sont aussi appréciées ..

Merci à l'avance ...

Répondre

0

Bonjour les gars j'ai trouvé la solution à mon problème, cela peut aider ceux qui sont frappés par un tel problème. Ceci peut être réalisé en utilisant une grille comme itemsHost et en ajoutant dynamiquement les enfants de itemscontrol à la grille et en l'animant. Puisque la grille n'obtient ses enfants qu'à l'exécution, nous avons plus de contrôle sur celle-ci et décidons quand elle doit être affichée à l'écran.

0

La première option est de vérifier cette question: Animate WPF Datatemplate when item added to Listbox?.

Une autre option serait de créer votre propre ItemsControl et de surcharger la méthode OnItemsChanged(). Mais ce n'est pas aussi facile que la première option.

Espérons que cela aide.

+0

hi Anvaka, Merci pour votre réponse. Je ne serai pas en mesure d'utiliser le premier et j'ai déjà essayé onItemsChanged(). J'ai besoin d'une méthode ou un événement qui répond immédiatement après la méthode Add() avant de rendre l'élément ajouté dans l'interface utilisateur – Vinod

0

Je lierais probablement la listbox à une collection dans un ViewModel, et j'ajouterais directement à cela plutôt que d'ajouter à la ListBox.