2017-10-02 14 views
0

Gridコントロールでは、既定のタブ順序は行単位で、次に列単位で表示されます。つまり、最初の列のすべてのコントロール、次に2番目の列のすべてのコントロールをタブで表示できます。グリッドの既定のタブ順序

ただし、最初の行のすべてのコントロール、次に2番目の行のすべてのコントロールをタブで操作できます。

各コントロールのTabIndexを設定することでこの問題を解決しました。しかし、これを手動でコーディングする必要がなければ、うれしいでしょう。デフォルトのタブ順序を変更する方法はありますか?

答えて

1

デフォルトのタブ順序は、行単位ではなく列単位で行われます。

あなたは簡単に以下の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を変更して、タブの順序を反映させることができます。

+0

はい、あなたは完全に正しいです。私はコントロールをxamlの別々の「列」にまとめました。ビジュアルツリーがタブ順序に影響を与えていることを理解していない。これは私が望んでいたよりも良い解決策です! – Mitkins

関連する問題