Ciao
Questo dipende dal fatto che l'evento viene scatenato anche quando l'elemento viene deselezionato. Quando clicki su un elemento, prima viene generato l'evento per la deselezione (quindi SelectedItems ha zero elementi, e se cerchi di accedervi, lancia l'eccezione), poi l'evento viene riscatenato per la nuova selezione.
Per evitare il sollevamento dell'eccezione, usa un codice tipo questo (sempre dal gestore eventi di ItemSelectionChanged):
//Se l'elemento sta venendo selezionato...
if (e.IsSelected)
{
//... imposta l'oggetto selezionato
item = e.Item;
}
else
{
//Altrimenti imposta l'oggetto selezionato a null
item = null;
}
Naturalmente poi prima di eseguire qualsiasi funzione su item, devi controllare che non sia null, altrimenti viene sollevata una NullReferenceException.
Luca