2010-11-01 2 views
0

Si je change la propriété ItemsSource d'un ListBox alors qu'un élément est sélectionné, je reçois exception IndexOutOfRange parce SelectedIndex propriété est définie lorsqu'un élément est sélectionné. Si aucun élément n'est sélectionné dans l'exception ListBox, cela n'est pas déclenché mais si la propriété SelectedItem est définie sur null avant de modifier l'ItemsSource, l'exception se produit toujours si un élément a été sélectionné car la propriété SelectedIndex a toujours une valeur.Changer la propriété ListBox ItemsSource tout élément est sélectionné dans les résultats IndexOutOfRange Exception

Existe-t-il une solution ou une solution de contournement pour ce problème?

Edit: Voici l'exemple de code, car ce problème ne se produit que si je demande un filtre Contains dans mon LINQ à l'expression des objets et un élément est sélectionné dans la zone de liste ... MyList est un List<> d'objets CLR ...

lstMyList.ItemsSource = MyList.Where(i => i.TypeId == 1); 

Cela fonctionne très bien. Cette requête LINQ modifiée fonctionne aussi très bien (si aucun élément est sélectionné) mais si un élément est sélectionné je reçois IndexOutOfRangeException

lstMyList.ItemsSource = MyList.Where(i => i.TypeId == 1 && i.DisplayName.Contains(someString)); 

Si je redirige cette requête LINQ à un var ou une liste de CLR objets de la requête fonctionne bien, mais quand j'essaye d'en faire une ItemsSource de ma ListBox j'obtiens l'exception (même si je fais cette var ou une liste d'objet CLR ItemsSource de ma ListBox à la place).

+0

Pourriez-vous écrire la trace d'exception! – Homam

Répondre

1

Il suffit de définir SelectedIndex à -1


EDIT: OK, essayez qu'au lieu:

listBox.ClearValue(Selector.SelectedIndexProperty); 
+0

J'ai essayé cela mais cela n'a pas fonctionné, j'obtiens l'exception d'IndexOutOfRange sur cette ligne ... La chose drôle est que tant qu'un article n'est pas choisi SelectedIndex = -1 ne lève pas une exception. –

+0

Voir ma réponse mise à jour –

+0

Cela génère également IndexOutOfRangeException. –

Questions connexes