Wpf 使用Tab键关注DataGridTemplateColumn中的ComboBox控件

Wpf 使用Tab键关注DataGridTemplateColumn中的ComboBox控件,wpf,datagrid,combobox,focus,datagridtemplatecolumn,Wpf,Datagrid,Combobox,Focus,Datagridtemplatecolumn,这是一个恼人的bug,从我的DataGrid工作一开始我就必须处理它,没有它我就找不到解决方案来拆除其他东西 我的DataGrid中有一个DataGridTemplateColumn,其中包含一个组合框,以及一些文本前后的其他单元格。当用户离开最后一个单元格的编辑时,它通过按Tab键来完成,以便将焦点移到下一个单元格my DataGridTemplateColumn上。我遇到的问题是,它首先聚焦单元格,然后再次按Tab键将组合框放在里面 所以我使用了datagrid\u previousKeyD

这是一个恼人的bug,从我的DataGrid工作一开始我就必须处理它,没有它我就找不到解决方案来拆除其他东西

我的DataGrid中有一个DataGridTemplateColumn,其中包含一个组合框,以及一些文本前后的其他单元格。当用户离开最后一个单元格的编辑时,它通过按Tab键来完成,以便将焦点移到下一个单元格my DataGridTemplateColumn上。我遇到的问题是,它首先聚焦单元格,然后再次按Tab键将组合框放在里面

所以我使用了datagrid\u previousKeyDown等。。。事件,这样写:

GridContentMethods.GetCell(this.gridCameras, GridContentMethods.GetRow(
    this.gridCameras, this.gridCameras.SelectedIndex), 5).IsTabStop = false;
GridContentMethods.GetCell(this.gridCameras, GridContentMethods.GetRow(
    this.gridCameras, this.gridCameras.SelectedIndex), 5).Focusable = false;
如果这样做,网格将失去焦点,但前提是我正在编辑上一个单元格。如果我只浏览我的专栏,它会工作得很好

然后,我在上测试代码。如果我编辑上一个单元格,焦点在组合框上,但我不能像以前那样用箭头更改值,最重要的是,它不会在我离开单元格时立即显示值。如果我没有编辑上一个单元格,我必须按Tab键两次才能对焦

我还发现我的组合框不再显示,但我只在CellEditingTemplate上方的CellTemplate中添加了一个空组合框,然后是同一个组合框。它就在这里,但没有更好的效果。下面是我的Xaml代码,用于上面的第一个测试:

<DataGridTemplateColumn Header="FPS" Width="80" x:Name="Fps">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox x:Name="cbFps"
                      Foreground="Black"
                      HorizontalContentAlignment="Left"
                      DropDownClosed="ComboBox_DropDownClosed"
                      DropDownOpened="cbFps_DropDownOpened"
                      Initialized="cbFps_Initialized"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
有时我会找到一个解决方案,但只是看到它没有保留以前的工作特性,这让我抓狂

我希望它如何工作:

如果用户使用Tab键将焦点从文本单元格移动到DataGridTemplateColumn,则焦点必须位于内部的组合框上,无论他是否正在编辑上一个单元格。另外,我希望组合框保留选中的值,最终用箭头选中,就像以前一样,我不应该再添加任何关于它的代码

谢谢你的帮助!我想在那之后我就不用再使用DataGrid控件了