2010-10-01 8 views
5

Mam ListBox, który składa się z elementów siatki w wielu SelectionMode w Silverlight 3.0.Uzyskiwanie indeksu wielu wybranych elementów w polu listy przy użyciu Silverlight

Kiedy używam ListBox.SelectedIndex zwraca tylko pierwszy element, który został wybrany.

Chciałbym móc zobaczyć wszystkie wybrane pozycje w taki sposób, że zwrócą wszystkie wybrane indeksy pozycji "takie jak; 2, 5, i 7 itd.

Każda pomoc?

Pozdrowienia,

Turtlepower.

+0

Czy sprawdzić, czy istnieje jest właściwością o nazwie SelectedIndices/SelectedIndexList lub podobnym? –

+0

ListBox w Silverlight nie ma SelectedIndices, ale i tak dziękuję. – turtlepower

Odpowiedz

8

można znaleźć wybrane indeksy przez iteracja SelectedItems i znalezienie obiektów w nieruchomości Items, tak:

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

Lub jeśli wolisz LINQ:

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

Dziękuję Yogesh, prawie działa. O dziwo, mam tylko 5 przedmiotów w moim polu listy, a kiedy je zwrócę, otrzymuję 7 pozycji, które idą "0, 1, 2, 3, 4, 0, 0, 0". Dlaczego dodatkowe trzy 0 na końcu? – turtlepower

+0

5 pozycji jak w wybranych pozycjach? Czy możesz opublikować kod, którego używasz, aby "zwrócić je"? – Yogesh

+0

Lista selectedItemIndexes = nowa lista (); foreach (obiekt o w myListBox.SelectedItems) { selectedItemIndexes.Add (myListBox.Items.IndexOf (o)); } Tak, 5 pozycji i ja wybieram tylko 5 pozycji. Dziwny. – turtlepower

Powiązane problemy