Modifier par programme le ListBoxItem sélectionné
-
10-07-2019 - |
Question
Est-il possible de modifier le ListBoxItem
sélectionné dans Code-Behind dans Windows Presentation Foundation?
C’est vraiment une tâche assez simple, j’ai les boutons Suivant
et Précédent
et ils représentent les éléments suivant et précédent de la ListBox
. Mais myListBox.items
sont bien sûr des représentations d'objet de ce que j'ai stocké dans ListBox
.
Alors, comment chercher le ListBoxItem
pour définir la propriété IsSelected
?
La solution
Probablement la chose la plus facile à faire dans votre cas puisque vous faites Précédent et Suivant est simplement d'incrémenter l'Index sélectionné:
//Increment
if(myListBox.SelectedIndex < myListBox.Items.Count -1)
myListBox.SelectedIndex++;
//Decrement
if(myListBox.SelectedIndex > 0)
myListBox.SelectedIndex--;
Si vous voulez vraiment obtenir le ListBoxItem qui constitue un objet que vous avez jeté dans votre ListBox, vous pouvez le faire:
ListBoxItem item = myListBox.ItemContainerGenerator.ContainerFromItem(objectIWantToSelect);
item.IsSelected = true;
Autres conseils
Vous avez différentes options:
- utilisez la propriété SelectedItem ou SelectedIndex du contrôle ListBox
- si vous avez le ListBoxItem et non le ListBox parent, utilisez ItemsControl.ItemsControlFromItemContainer (listboxitem) pour récupérer le ListBox parent (et utilisez les propriétés précédentes)
- utiliser les interfaces ICollectionView (CollectionViewSource.GetDefaultView) et ses méthodes (MoveCurrentToNext, MoveCurrentToPrevious)