Programmatisch ändern ausgewählt ListBoxItem
-
10-07-2019 - |
Frage
Ist es möglich, das ausgewählte ListBoxItem
von Codebehind in Windows Presentation Foundation zu ändern?
Es ist eine ziemlich einfache Aufgabe, wirklich, ich habe eine Next
und Previous
Taste und sie stellen die nächste und vorherige Element in der ListBox
. Aber myListBox.items
ist natürlich Objektdarstellungen von dem, was ich in der ListBox
gespeichert.
Also, wie würde man die ListBoxItem
holt die IsSelected
Eigenschaft zu setzen?
Lösung
Die wohl leichter, was in Ihrem Fall zu tun, da Sie zurück tun und Weiter wird nur die SelectedIndex erhöhen:
//Increment
if(myListBox.SelectedIndex < myListBox.Items.Count -1)
myListBox.SelectedIndex++;
//Decrement
if(myListBox.SelectedIndex > 0)
myListBox.SelectedIndex--;
Wenn Sie wirklich wollen die ListBoxItem erhalten, die ein Objekt macht Sie in Ihrer List-Box geworfen haben, können Sie tun:
ListBoxItem item = myListBox.ItemContainerGenerator.ContainerFromItem(objectIWantToSelect);
item.IsSelected = true;
Andere Tipps
Sie haben verschiedene Möglichkeiten:
- verwenden, um die SelectedItem oder SelectedIndex-Eigenschaft des ListBox-Steuerelement
- , wenn Sie die ListBoxItem und nicht die übergeordnete ListBox haben, verwenden Sie ItemsControl.ItemsControlFromItemContainer (ListBoxItem) das übergeordnete ListBox (und verwenden Sie die vorherigen Eigenschaften) abrufen
- verwenden, um die ICollectionView Schnittstellen (CollectionViewSource.GetDefaultView) und seine Methoden (MoveCurrentToNext, MoveCurrentToPrevious)