失去焦点后,WPF ListBox 如何将焦点设置到第一个项目?

5

问题: 我在WPF ListBox中嵌套了一个ListBox,并在代码后台中添加了一些自定义的选择管理,但是我无法管理焦点和项目选择。

背景: "父" ListBox 被分配了一个包含 "子" ListBoxDataTemplate。我已经添加了代码来使用上下箭头键从父 ListBoxItem 导航到子项,从子项返回到父项。

当导航回不是第一个级别列表框中的父项时,焦点总是设置为第一个项目,并且即使程序将其设置为非第一个项目(例如父项#2),也会被选中。我已经跟踪了代码,焦点和选择被设置为非第一个项目,但随后又接收到另一个事件以选择并将焦点设置为第一个项目。

stackoverflow 上还有一个类似于我所经历的情况的案例。该案例是 wpf listview lost the focus 我尝试了此案例中的所有答案和响应,但没有一个起作用。

有没有人了解为什么我无法以编程方式选择父ListBox中的非第一个元素?


我有一个类似的问题,你找到任何解决方案了吗? 我尝试使用((ListBoxItem)ItemContainerGenerator.ContainerFromItem(SelectedItem)).Focus(),但没有成功。 - Cinaird
2个回答

0
尝试使用 ListBox.IsSynchronizedWithCurrentItem = true,然后使用列表的集合视图(如果没有显式创建一个,可以使用 CollectionViewSource.GetDefaultView)来设置当前项(ICollectionView.MoveCurrentTo())。
当与集合视图一起工作时,选择器有一种更可取的方法来处理选定的项目,而不是使用 SelectedItem

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接