2012-03-27 3 views
0

J'ai un ListBox dans une application Silverlight. J'essaie de créer une listbox modifiable, donc j'utilise un ItemTemplate pour avoir les contrôles dont j'ai besoin dans chaque item, comme un textBox et des boutons, et ça marche bien.Silverlight ListBox Articles affichés dans un ordre différent de celui de la collection Items

Je voudrais avoir une ligne à la fin de la zone de liste avec un bouton pour ajouter de nouveaux éléments. Étant donné que cet élément ne sera pas lié à l'une de mes classes de domaine, j'utilise un objet simple en tant que «remplisseur», et puis j'ai du code qui identifie cet élément pour montrer le bouton correctement.

myListBox.Items.add(new object()); 

Le problème est que je veux que ce « nouveau record » point à garder toujours à la fin de listbox, quand je dois insérer un nouvel enregistrement de domaine, j'utilise ce code:

myListBox.Items.Insert(myListBox.Items.Count - 1, domainItem); 

Lorsque je débogue les collections myListBox.Items, il est dans le bon ordre, avec le bouton "ajouter nouveau" à la fin, mais la boîte de liste affiche ce bouton au début. Pourquoi mes articles sont-ils affichés dans un ordre différent de la collection Articles?

+0

Le bouton est au-dessus du nouvel élément ou au dessus de tous les articles? – Vinicius

Répondre

1

Sauf s'il y a une raison spécifique, au lieu d'essayer de placer le bouton dans la collection de listbox elle-même, il est préférable de créer un nouveau contrôle avec le bouton en dehors et en dessous de la liste. Vous pouvez toujours styliser le bouton pour qu'il apparaisse dans la liste si nécessaire.

+0

Merci pour la suggestion, je l'ai fait et résoudre mon problème. – Marlon

1

Y a-t-il une raison pour laquelle vous n'utilisez pas de grille de données car cela supprimerait tous vos problèmes de commande et vous permettrait de modifier les entrées.

La grille de données est liée à une ObservableCollection qui connecte automatiquement vos champs modifiables à l'interface graphique.

Cheers,

Questions connexes