以编程方式更改选定的ListBoxItem

时间:2009-10-29 15:45:19

标签: c# wpf listbox selecteditem listboxitem

是否可以在Windows Presentation Foundation中从Code-Behind更改选定的ListBoxItem

这是一项非常简单的任务,我有一个NextPrevious按钮,它们代表ListBox中的下一个和上一个项目。但是,myListBox.items当然是我在ListBox中存储的对象的表示。

那么,如何获取ListBoxItem来设置IsSelected属性呢?

2 个答案:

答案 0 :(得分:5)

可能在你的情况下更容易做的事情,因为你正在做Previous和Next只是增加SelectedIndex:

//Increment
if(myListBox.SelectedIndex < myListBox.Items.Count -1)
     myListBox.SelectedIndex++;

//Decrement
if(myListBox.SelectedIndex > 0)
     myListBox.SelectedIndex--;

如果确实想要获取构成您在ListBox中抛出的对象的ListBoxItem,则可以执行以下操作:

ListBoxItem item = myListBox.ItemContainerGenerator.ContainerFromItem(objectIWantToSelect);
item.IsSelected = true;

答案 1 :(得分:1)

您有多种选择:

  • 使用ListBox控件的SelectedItem或SelectedIndex属性
  • 如果您有ListBoxItem而不是父ListBox,请使用ItemsControl.ItemsControlFromItemContainer(listboxitem)来检索父ListBox(并使用以前的属性)
  • 使用ICollectionView接口(CollectionViewSource.GetDefaultView)及其方法(MoveCurrentToNext,MoveCurrentToPrevious)