Modifica a livello di codice ListBoxItem selezionato
-
10-07-2019 - |
Domanda
È possibile cambiare il ListBoxItem
selezionato da Code-Behind in Windows Presentation Foundation?
In realtà è un compito abbastanza semplice, ho un pulsante Next
e Previous
e rappresentano l'elemento successivo e precedente in ListBox
. Ma myListBox.items
sono ovviamente rappresentazioni di oggetti di ciò che ho archiviato in ListBox
.
Quindi, come si può recuperare ListBoxItem
per impostare la proprietà IsSelected
?
Soluzione
Probabilmente la cosa più semplice da fare nel tuo caso poiché stai facendo Precedente e Successivo è semplicemente incrementare SelectedIndex:
//Increment
if(myListBox.SelectedIndex < myListBox.Items.Count -1)
myListBox.SelectedIndex++;
//Decrement
if(myListBox.SelectedIndex > 0)
myListBox.SelectedIndex--;
Se veramente vuoi ottenere il ListBoxItem che costituisce un oggetto che hai lanciato nel tuo ListBox, puoi fare:
ListBoxItem item = myListBox.ItemContainerGenerator.ContainerFromItem(objectIWantToSelect);
item.IsSelected = true;
Altri suggerimenti
Hai varie opzioni:
- utilizza la proprietà SelectedItem o SelectedIndex del controllo ListBox
- se si dispone di ListBoxItem e non di ListBox padre, utilizzare ItemsControl.ItemsControlFromItemContainer (listboxitem) per recuperare ListBox padre (e utilizzare le proprietà precedenti)
- utilizza le interfacce ICollectionView (CollectionViewSource.GetDefaultView) e i suoi metodi (MoveCurrentToNext, MoveCurrentToPrevious)