2009-10-29 19 views
1

Est-il possible de modifier le code ListBoxItem sélectionné dans Code-behind dans Windows Presentation Foundation?Modifier par programme le ListBoxItem sélectionné

C'est une tâche assez simple vraiment, j'ai un Next et un bouton Previous et ils représentent l'article suivant et précédent dans le ListBox. Mais, myListBox.items sont bien sûr des représentations d'objet de ce que j'ai stocké dans le ListBox. Alors, comment chercher une ListBoxItem pour définir la propriété IsSelected?

Répondre

5

Probablement la chose plus facile à faire dans votre cas puisque vous faites précédent et suivant est incrémente seulement le SelectedIndex:

//Increment 
if(myListBox.SelectedIndex < myListBox.Items.Count -1) 
    myListBox.SelectedIndex++; 

//Decrement 
if(myListBox.SelectedIndex > 0) 
    myListBox.SelectedIndex--; 

Si vous vraiment voulez obtenir le ListBoxItem qui fait un objet que vous avez jeté dans votre ListBox, vous pouvez faire:

ListBoxItem item = myListBox.ItemContainerGenerator.ContainerFromItem(objectIWantToSelect); 
item.IsSelected = true; 
1

Vous avez différentes options:

  • Les SelectedItem ou la propriété SelectedIndex du contrôle ListBox
  • si vous avez la ListBoxItem et non la ListBox mère, utilisez ItemsControl.ItemsControlFromItemContainer (ListBoxItem) pour récupérer le parent ListBox (et en utilisant les propriétés précédentes)
  • utiliser les interfaces ICollectionView (CollectionViewSource.GetDefaultView) et ses méthodes (MoveCurrentToNext, MoveCurrentToPrevious)
+0

Vous ne savez pas pourquoi vous avez un downvote. Votre réponse est techniquement correcte. J'ai upvoted pour compenser :) –

+0

Ne sait pas non plus ... Merci :-) – japf