0

我有一个 WPF 数据网格。

当用户按下 Tab 键时,我不想关注第一列和第三列,所以当我到达一行时,我应该在第二列,当我再次按下 Tab 键并到达第 3 列时,它应该移动到第 4 列.

我如何在 WPF DataGrid 中执行此操作

4

2 回答 2

5

TabStopIndex 值指示按下 Tab 键时下一个应获得焦点的字段。此外,您可以通过KeyboardNavigation设置来完全禁用控件的 TabStop 。IsTabStop附加属性。

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>
于 2012-04-24T02:32:48.633 回答
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>
于 2012-04-24T01:10:21.027 回答