WPF列表框在失去焦点后将焦点设置为第一项

WPF列表框在失去焦点后将焦点设置为第一项,wpf,listbox,selection,Wpf,Listbox,Selection,问题: 我在WPF列表框中管理焦点和项目选择时遇到问题,该列表框中嵌入了一个列表框,并且在代码隐藏中有一些自定义的选择管理 背景: “父项”ListBox分配了一个DataTemplate,其中包含一个“子项”ListBox。我添加了代码,可以使用上下箭头键从父项ListBoxItem导航到子项,并从子项返回到父项 当导航回一级列表框中不是第一项的父项时,焦点始终设置为第一项,即使在程序中设置为非第一项(例如父项#2),焦点也会被选中。我已经跟踪了代码,焦点和选择设置为非第一项,但始终会收到另一

问题: 我在WPF列表框中管理焦点和项目选择时遇到问题,该列表框中嵌入了一个列表框,并且在代码隐藏中有一些自定义的选择管理

背景: “父项”
ListBox
分配了一个
DataTemplate
,其中包含一个“子项”
ListBox
。我添加了代码,可以使用上下箭头键从父项
ListBoxItem
导航到子项,并从子项返回到父项

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

还有一个关于stackoverflow的案例,与我的经历类似。情况是,我尝试了本案例中的所有答案和回答,但没有一个有效


有人知道为什么我不能以编程方式在父级
列表框中选择非第一个元素吗?

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


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

我也一直在努力解决列表框中的焦点问题。也许这两个问题的答案将进一步帮助您。特别是在背景线程上设置焦点的技巧非常有用


我也有类似的问题,您找到解决方案了吗?我尝试了((ListBoxItem)ItemContainerGenerator.ContainerFromItem(SelectedItem)).Focus(),但没有成功