DataGrid丢失“ KeyboardFocusWithin”

时间:2019-10-28 23:50:50

标签: c# wpf mvvm datagrid

我有一个简单的“ DataGridUsercontrol”,其中有一个带有文本列的Datagrid(我需要一遍又一遍地重复使用)。 Usecontrol公开了MyItemSourceMySelectedItem作为Dependency Properties,它们又绑定到DataGrid-这让我在UserControl中定义它们使用DataGridUsercontrol

DataGridUsercontrol还公开了多个连接到上下文菜单和键盘输入的ICommand DP。 (这是可重用性发挥作用的地方。)

我不确定可重复使用的UserControl中的DataGrid是否与此问题有关,但我想做到这一点。

我使用键盘绑定输入的是 CTRL + Up 。这与VM中的DelegateCommand挂钩,从而将SelectedItem“ {”向上移动了ObservableCollection中的一个空间。本质上,这是一个用户可以更改其顺序的列表。

我正在使用Prism 7和Unity DI,但这在这里确实没有发挥作用。

我可以上下移动项目。

但是,在ObservableCollection更改之后,DataGrid立即丢失了KeyboardFocusWithin(这是通过捕获事件并在WPF分析器中进行检查来确认的,我可以在其中查看IsKeyboardFocusWithin。结果是Datagrid不再监听键盘输入,因此,如果我想再次使用键盘,则必须重新选择表。

SelectedItem不变。 SelectedIndex正确更改为跟随SelectedItem移至的位置。正常的“蓝色”突出显示将替换为浅灰色突出显示。

我的问题是我该如何保持焦点或是否有一个好事件要抓住才能正确地重新设置焦点。

0 个答案:

没有答案