-
Rafraîchir une listbox
Bonjour,
J'ai un ArrayList que j'ai associé à une ListBox (maListBox.ItemsSource = monArrayList). Tout fonctionne parfaitement lorsque je l'associe pour la premier fois. Cependant, si j'ajoute ou je modifie des données dans mon ArrayList, ma ListBox ne prend pas les changements en compte. Comment faire pour rafaîchir ma listbox après changement?
-
Il faut réafecter itemsource (listbox.ItemsSource = listbox.ItemsSource) pour notifier le changement.
Sinon, la solution la plus propre consiste à ne pas utiliser de listes mais plutot ObservableCollection<T> : Ton ItemsSource sera notifié lors de l'ajout d'éléments à la collection si utilises cette classe.
-
Merci de ta réponse,
Cependant j'ai trouvé mieux pour ceux que ça intéresse. Après la modification de mon Array je n'ai qu'à faire maListBox.Items.Refresh() et le tour est joué!
-
Ca revient au même, mais c'est plus joli tu as raison ;)
Ceci dit, je soutiens mon post : Niveau performances, il est plus intéressant d'utiliser ObservableCollection<T>
Surtout si tu n'affiches pas de simple strings, et que tu utilises un <Listbox.ItemsTemplate /> :
Lorsque ta source est mise à jour, tous les éléments de la liste sont reconstruits. Alors qu'avec ObservableCollection<>, seul l'élément ajouté sera traité. Les autres seront considérés comme inchangés.
Lorsque tu as une liste un peu volumineuse (mais pas assez volumineuse pour utiliser la virtualisation)... ça peut faire la différence !
Mais suivant tes besoins, un refresh suffira :mouarf: