Программно изменить выбранный ListBoxItem - PullRequest
1 голос
/ 29 октября 2009

Можно ли изменить выбранное ListBoxItem с Code-Behind в Windows Presentation Foundation?

Это довольно простая задача, у меня есть кнопки Next и Previous, и они представляют следующий и предыдущий элемент в ListBox. Но myListBox.items - это, конечно, объектные представления того, что я хранил в ListBox.

Итак, как можно получить ListBoxItem для установки свойства IsSelected?

Ответы [ 2 ]

5 голосов
/ 29 октября 2009

Вероятно, проще всего сделать это в вашем случае, так как вы выполняете 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;
1 голос
/ 29 октября 2009

У вас есть различные варианты:

  • использовать свойство SelectedItem или SelectedIndex элемента управления ListBox
  • если у вас есть ListBoxItem, а не родительский ListBox, используйте ItemsControl.ItemsControlFromItemContainer (listboxitem) для получения родительского ListBox (и использования предыдущих свойств)
  • использовать интерфейсы ICollectionView (CollectionViewSource.GetDefaultView) и его методы (MoveCurrentToNext, MoveCurrentToPrevious)
...