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

Kel*_*Cox 5 wpf listbox selection

问题: 我在使用嵌入式ListBox和后面的代码中的一些自定义选择管理的WPF ListBox中管理焦点和项目选择时遇到了问题.

背景: "父" ListBox被指定DataTemplate包含"子" ListBox.我添加了代码,使用从父ListBoxItem项到子项的向上和向下箭头键以及子项返回到父项进行导航.

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

stackoverflow上有另一个案例,与我遇到的情况类似.案例是wpf listview失去了焦点我在这种情况下尝试了所有答案和答案,但没有一个有效.

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

Dan*_*ore 0

尝试使用ListBox.IsSynchronizedWithCurrentItem = truethen 使用列表的集合视图(如果您没有显式创建集合视图,则可以使用CollectionViewSource.GetDefaultView)来设置当前项 ( ICollectionView.MoveCurrentTo())。

在使用集合视图时,选择器有一种更好的方法来处理选定的项目,而不是SelectedItem.