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 ?

Était-ce utile?

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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top