2010-10-01 10 views
5

J'ai un contrôle ListBox composé d'éléments de grille dans Multiple SelectionMode dans Silverlight 3.0. Quand j'utilise ListBox.SelectedIndex, il ne renvoie que le premier élément sélectionné. Je voudrais être en mesure de voir tous les éléments sélectionnés de telle sorte qu'il retournerait tous les index d'éléments sélectionnés tels que; 2, 5, et 7, etc.Obtention de l'index de plusieurs éléments sélectionnés dans une zone de liste à l'aide de Silverlight

Une aide?

Cheers,

Turtlepower.

+0

Avez-vous vérifier si est une propriété nommée SelectedIndices/SelectedIndexList ou similaire? –

+0

ListBox dans Silverlight n'a pas SelectedIndices, mais merci quand même. – turtlepower

Répondre

8

Vous pouvez trouver les indices sélectionnés par itérer SelectedItems et trouver les objets dans la propriété Items, comme ceci:

List<int> selectedItemIndexes = new List<int>(); 
foreach (object o in listBox.SelectedItems) 
    selectedItemIndexes.Add(listBox.Items.IndexOf(o)); 

Ou si vous préférez LINQ:

List<int> selectedItemIndexes = (from object o in listBox.SelectedItems select listBox.Items.IndexOf(o)).ToList(); 
+1

Merci Yogesh, ça marche presque. Curieusement, je n'ai que 5 articles dans ma liste et quand je les renvoie tous je reçois 7 articles qui vont "0, 1, 2, 3, 4, 0, 0, 0". Pourquoi les trois 0 supplémentaires à la fin? – turtlepower

+0

5 articles comme dans les éléments sélectionnés? Pouvez-vous poster le code que vous utilisez pour les "renvoyer"? – Yogesh

+0

Liste selectedItemIndexes = new Liste (); foreach (objet o dans myListBox.SelectedItems) { selectedItemIndexes.Add (myListBox.Items.IndexOf (o)); } Oui, 5 articles et moi seulement 5 articles aussi. Impair. – turtlepower