2013-05-13 10 views
5

Ho un'app WP8 ​​DataBound con un ItemViewModel associato a LongListSelector.Ottenere il SelectedIndex di un oggetto LongListSelector

Semplicemente, quando l'utente tocca un elemento nell'elenco, devo recuperare il numero di indice dell'elemento selezionato per l'uso futuro. (0 è il primo della lista, 1 è secondo, etc.)

Così, proprio come questo potrebbe recuperare una certa proprietà dell'elemento selezionato:

string whateverProperty = (MyLongListSelector.SelectedItem as ItemViewModel).WhateverProperty; 

Ho bisogno di qualcosa di simile (ovviamente fatta codice):

int indexNumber = (MyLongListSelector.SelectedItem as ItemViewModel).GetSelectedIndex(); 

penso che la proprietà SelectedIndex è la cosa che ho bisogno, ma non riesco a capire come recuperarlo.

Grazie!

MODIFICA: RISOLTO! Quello che segue mi fa esattamente quello che stavo cercando:

int selectedIndex = App.ViewModel.Items.IndexOf(MainLongListSelector.SelectedItem as ItemViewModel); 
+0

Questo restituisce sempre -1 per me. Qualche idea su quale potrebbe essere il problema? –

+0

Lo stesso qui .. restituisce sempre -1 – veereev

risposta

1

Ho avuto lo stesso problema. È necessario utilizzare ItemSource per recuperare l'indice. Dovrebbe corrispondere all'indice del modello di dati per l'indice.

int selectedIndex = selector.ItemsSource.IndexOf(selector.SelectedItem as ItemViewModel); 

il selettore fa riferimento al mittente dell'oggetto LongListSelector. Spero che questo ti aiuti!