Cambiar mediante programación ListBoxItem seleccionado
-
10-07-2019 - |
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
?
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)