Вопрос

Можно ли изменить выбранный 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).
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top