Программно изменить выбранный элемент ListBoxItem
-
10-07-2019 - |
Вопрос
Можно ли изменить выбранный ListBoxItem
из Code-Behind в Windows Presentation Foundation?
На самом деле это довольно простая задача, у меня есть Next
и Previous
кнопка, и они представляют следующий и предыдущий элемент в ListBox
.Но, myListBox.items
являются, конечно, объектными представлениями того, что я сохранил в ListBox
.
Итак, как можно было бы получить ListBoxItem
чтобы установить IsSelected
собственность?
Решение
Вероятно, проще всего это сделать в вашем случае, так как вы выполняете Previous и Next, просто увеличивая SelectedIndex:
//Increment
if(myListBox.SelectedIndex < myListBox.Items.Count -1)
myListBox.SelectedIndex++;
//Decrement
if(myListBox.SelectedIndex > 0)
myListBox.SelectedIndex--;
Если вы действительно хотите получить ListBoxItem, который составляет объект, который вы бросили в свой ListBox, вы можете сделать следующее:
ListBoxItem item = myListBox.ItemContainerGenerator.ContainerFromItem(objectIWantToSelect);
item.IsSelected = true;
Другие советы
У вас есть различные варианты:
- используйте свойство SelectedItem или SelectedIndex элемента управления ListBox
- если у вас есть ListBoxItem, а не родительский ListBox, используйте ItemsControl.ItemsControlFromItemContainer(listboxitem) для извлечения родительского списка (и использования предыдущих свойств)
- используйте интерфейсы ICollectionView (CollectionViewSource.GetDefaultView) и его методы (MoveCurrentToNext, MoveCurrentToPrevious).