Можно ли изменить выбранный ListBoxItem
из Code-Behind в Windows Presentation Foundation?
На самом деле это довольно простая задача, у меня есть кнопки Next
и Previous
, и они представляют следующий и предыдущий элементы в ListBox
. Но, конечно, myListBox.items
представляют собой объектные представления того, что я сохранил в ListBox
.
Итак, как получить ListBoxItem
, чтобы установить свойство IsSelected
?
2 ответа
Вероятно, в вашем случае проще всего, поскольку вы выполняете 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) для получения родительского ListBox (и используйте предыдущие свойства)
- использовать интерфейсы ICollectionView (CollectionViewSource.GetDefaultView) и его методы (MoveCurrentToNext, MoveCurrentToPrevious)
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.