Pregunta

¿Es posible cambiar el ListBoxItem seleccionado de Code-Behind en Windows Presentation Foundation?

Realmente es una tarea bastante simple, tengo un botón Next y Previous y representan el elemento siguiente y anterior en el ListBox . Pero, myListBox.items son, por supuesto, representaciones de objetos de lo que almacené en el ListBox .

Entonces, ¿cómo se podría obtener el ListBoxItem para establecer la propiedad IsSelected ?

¿Fue útil?

Solución

Probablemente lo más fácil de hacer en su caso, ya que está haciendo Anterior y Siguiente, es simplemente incrementar el Índice seleccionado:

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

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

Si realmente desea obtener el ListBoxItem que forma un objeto que ha lanzado en su ListBox, puede hacer:

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

Otros consejos

Tiene varias opciones:

  • use la propiedad SelectedItem o SelectedIndex del control ListBox
  • si tiene el ListBoxItem y no el ListBox primario, use ItemsControl.ItemsControlFromItemContainer (listboxitem) para recuperar el ListBox primario (y use las propiedades anteriores)
  • use las interfaces ICollectionView (CollectionViewSource.GetDefaultView) y sus métodos (MoveCurrentToNext, MoveCurrentToPrevious)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top