网格默认标签顺序

时间:2017-10-02 00:25:16

标签: wpf grid tab-ordering

使用Grid控件,似乎默认的Tab键顺序是按行,然后按列。也就是说,我可以选中第一列中的所有控件,然后是第二列中的所有控件。

但是,我希望能够标记第一行中的所有控件,然后是第二行中的所有控件。

我通过为每个控件设置TabIndex来解决此问题。但如果我不必手动编码,那就太好了。有没有办法更改默认的Tab键顺序?

1 个答案:

答案 0 :(得分:1)

默认的Tab键顺序不是按行而是按列。

您可以使用以下XAML轻松检查:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <TextBox Grid.Row="0" Grid.Column="0" />
    <TextBox Grid.Row="0" Grid.Column="1" />
    <TextBox Grid.Row="1" Grid.Column="0" />
    <TextBox Grid.Row="1" Grid.Column="1" />
</Grid>

这将从左上角的文本框开始逐行,从左到右遍历文本框。

如果您将订单更改为:

<TextBox Grid.Row="0" Grid.Column="0" />
<TextBox Grid.Row="1" Grid.Column="0" />
<TextBox Grid.Row="1" Grid.Column="1" />
<TextBox Grid.Row="0" Grid.Column="1" />

它将从左上角开始以逆时针方式从控件中切换。

因此默认顺序由它们在可视树中的顺序决定。您可以尝试更改XAML以反映您喜欢的标签顺序。