我有一个WPF DataGrid。
当用户按Tab键时,我不想把焦点放在第一列和第三列上,所以当我到达一行时,我应该在第二列,当我再次按Tab键并达到3列时,它会sholud move到第4栏。
我如何在WPF DataGrid中执行此操作
答案 0 :(得分:5)
TabStopIndex值表示按Tab键时下一个应该获得焦点的字段。此外,您可以通过附加KeyboardNavigation。IsTabStop附加属性来完全禁用控件的TabStop。
XAML:
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
<DataGrid.Resources>
<Style x:Key="NoTabStopStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="KeyboardNavigation.IsTabStop" Value="False"/>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=FirstColumn}" CellStyle="{StaticResource NoTabStopStyle}"/>
<DataGridTextColumn Binding="{Binding Path=SecondColumn}"/>
<DataGridTextColumn Binding="{Binding Path=ThirdColumn}" CellStyle="{StaticResource NoTabStopStyle}"/>
</DataGrid.Columns>
</DataGrid>
答案 1 :(得分:0)
您可以停用这些列:
<Window.Resources>
<Style x:Key="NotSelectableColumStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="IsEnabled" Value="False"/>
</Style>
</Window.Resources>
<Grid Name="LayoutRoot">
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Age}" />
<!--<Disable this column>-->
<DataGridTextColumn CellStyle="{StaticResource NotSelectableColumStyle}" Binding="{Binding Path=Name}" />
<DataGridTextColumn Binding="{Binding Path=Address}" />
</DataGrid.Columns>
</DataGrid>
</Grid>