【问题标题】:Programmatically change selected ListBoxItem以编程方式更改选定的 ListBoxItem
【发布时间】:2009-10-29 15:45:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# wpf listbox selecteditem listboxitem


    【解决方案1】:

    在您的情况下,可能更容易做的事情是因为您正在执行 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;
    

    【讨论】:

      【解决方案2】:

      您有多种选择:

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

      【讨论】:

      • 不知道你为什么投了反对票。您的回答在技术上是正确的。我赞成补偿:)
      • 也不知道...谢谢:-)
      猜你喜欢
      • 2018-12-01
      • 2011-06-12
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多