列表框选定的项目包括所有项目
ListBox Selected Items Includes All Items
用户单击 CheckedListBox 中的任意数量的项目后,我想在 window 关闭时以编程方式删除对这些项目的检查。使用名为 lstChoices 的 CheckedListBox,我有:
For I As Integer = 0 To lstChoices.SelectedItems.Count - 1
Dim lbi As Xceed.Wpf.Toolkit.Primitives.SelectorItem = CType(lstChoices.ItemContainerGenerator.ContainerFromIndex(I), Xceed.Wpf.Toolkit.Primitives.SelectorItem)
lbi.IsSelected = False
Next
问题是 SelectedItems 属性 不是选定的项目。奇怪的是,SelectedItems.Count 属性 计算正确,但循环只遍历第一个 ListBoxItems 直到计数,无论它们是否被选中。
文档说 SelectedItems 属性“获取选中项目的集合”。文档有误或该控件中存在错误。我怎样才能只得到勾选的项目。
你必须小心区分 SelectedItems 和 Items 的元素。
试试这个:
For I As Integer = 0 To lstchoices.SelectedItems.Count - 1
lstchoices.SetItemCheckState(lstchoices.Items.IndexOf(lstchoices.SelectedItems(I)), CheckState.Unchecked)
Next
您目前正在迭代 Items
集合作为 ContainerFromIndex
returns 基于 Items
属性 而不是 [=14= 的项目] 属性.
您应该迭代 SelectedItems
并改用 lstChoices.ItemContainerGenerator.ContainerFromItem
:
For index As Integer = 0 To lstChoices.SelectedItems - 1
Dim selectedItem = lstChoices.SelectedItems(index)
Dim selectedItemContainer = TryCast(lstChoices.ItemContainerGenerator.ContainerFromItem(selectedItem), Selector)
selectedItemContainer.IsSelected = False
Next
用户单击 CheckedListBox 中的任意数量的项目后,我想在 window 关闭时以编程方式删除对这些项目的检查。使用名为 lstChoices 的 CheckedListBox,我有:
For I As Integer = 0 To lstChoices.SelectedItems.Count - 1
Dim lbi As Xceed.Wpf.Toolkit.Primitives.SelectorItem = CType(lstChoices.ItemContainerGenerator.ContainerFromIndex(I), Xceed.Wpf.Toolkit.Primitives.SelectorItem)
lbi.IsSelected = False
Next
问题是 SelectedItems 属性 不是选定的项目。奇怪的是,SelectedItems.Count 属性 计算正确,但循环只遍历第一个 ListBoxItems 直到计数,无论它们是否被选中。
文档说 SelectedItems 属性“获取选中项目的集合”。文档有误或该控件中存在错误。我怎样才能只得到勾选的项目。
你必须小心区分 SelectedItems 和 Items 的元素。
试试这个:
For I As Integer = 0 To lstchoices.SelectedItems.Count - 1
lstchoices.SetItemCheckState(lstchoices.Items.IndexOf(lstchoices.SelectedItems(I)), CheckState.Unchecked)
Next
您目前正在迭代 Items
集合作为 ContainerFromIndex
returns 基于 Items
属性 而不是 [=14= 的项目] 属性.
您应该迭代 SelectedItems
并改用 lstChoices.ItemContainerGenerator.ContainerFromItem
:
For index As Integer = 0 To lstChoices.SelectedItems - 1
Dim selectedItem = lstChoices.SelectedItems(index)
Dim selectedItemContainer = TryCast(lstChoices.ItemContainerGenerator.ContainerFromItem(selectedItem), Selector)
selectedItemContainer.IsSelected = False
Next