我有一个包含很多列的数据网格。现在通常用户可以按 TAB 在 DataGrid 单元格中的控件之间循环。数据网格单元格已设置为 IsTabStop = false,因此它会跳过对单元格本身的关注,并且在将焦点分配给实际控件之前它只会失败。
如果用户按 Enter 键,这似乎不起作用,因为他们想在同一列中工作。DataGrid 会将焦点传递到 COLUMN 中的下一个单元格,但它也会忽略 IsTabStop 设置,因此它只会将焦点放在单元格本身而不是内部控件上。
任何想法如何解决这一问题。
简短示例
<DataGrid AutoGenerateColumns="False" Name="grid1" >
<DataGrid.Resources>
<Style TargetType="{x:Type Border}" x:Key="coloredBorder">
<Setter Property="Background" Value="Yellow"/>
</Style>
<Style TargetType="DataGridCell">
<Setter Property="IsTabStop" Value="False"/>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding A, Mode=OneWay}" Header="A"/>
<DataGridTemplateColumn Header="B">
<DataGridTemplateColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource {x:Type DataGridCell}}">
<Setter Property="Template">
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
此外,我在此处附加了示例 WPF 应用程序。要重现,请单击组合框之一以使其成为焦点。按选项卡,您将看到下一个组合框正常获得焦点。如果我添加了多个组合框列,右侧的组合框将获得焦点。
但是,如果您按 Enter,焦点将转到下面的单元格,但不会跳过该单元格并转到单元格内容。而是突出显示单元格。像这样:
相关分类