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 ?

È stato utile?

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top