デフォルトのタブ順序は、行単位ではなく列単位で行われます。
あなたは簡単に以下の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を変更して、タブの順序を反映させることができます。
はい、あなたは完全に正しいです。私はコントロールをxamlの別々の「列」にまとめました。ビジュアルツリーがタブ順序に影響を与えていることを理解していない。これは私が望んでいたよりも良い解決策です! – Mitkins