我在 WPF 中有一个观点,我一直在努力使标签顺序正确。我有三个文本框(我们称它们为 Text1、Text2 和 Text3)和两个自定义控件,每个控件上都有几个其他文本框和各种控件(我们称它们为 Custom1 和 Custom2)。
布局是这样的,标签流应该去 Text1、Text2、Custom1、Custom2、Text3。我已在每个控件上设置 TabIndex 属性以匹配此排序,并验证它们都设置为 IsTabStop。
问题是,实际的选项卡流程是 Text1、Text2、Text3,然后是 Custom1、Custom2,我不知道为什么。当它进入自定义控件时,它会正确地跨过它们中的每个控件,正如我所期望的那样。我只是想不通为什么它在进入第一个自定义控件之前进入第三个文本框。
我已经尝试了我能想到的一切,包括确保所有 xaml 元素都按 Tab 键顺序排列,但似乎没有任何帮助。
我怀疑它在关注任何自定义控件之前会检查其所有基本控件,但我没有想法。任何帮助都会很棒。
编辑: 这是我的 xaml:
<Grid>
<GroupBox x:Name="_groupBox" BorderBrush="Transparent" BorderThickness="0">
<Grid x:Name="_card">
<Label Content="A:" Height="28" HorizontalAlignment="Left" Margin="5,3,0,0" Name="_labelA" VerticalAlignment="Top" />
<Label Content="B:" Height="28" HorizontalAlignment="Left" Margin="5,25,0,0" Name="_labelB" VerticalAlignment="Top" />
<TextBox Name="_a" Height="20" HorizontalAlignment="Left" Text="{Binding AText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsEnabled="{Binding AEnabled}" Margin="94,5,0,0" VerticalAlignment="Top" LostFocus="InputNameLeave" Width="221" TabIndex="0" />
<TextBox Name="_b" Height="20" HorizontalAlignment="Left" Margin="94,26,0,0" Text="{Binding BText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="102" TabIndex="1" />
<my:CustomControlA HorizontalAlignment="Left" Margin="-6,55,0,0" x:Name="_custom1" VerticalAlignment="Top" TabIndex="2" IsTabStop="True" />
<my:CustomControlB HorizontalAlignment="Left" Margin="334,0,0,0" x:Name="_custom2" VerticalAlignment="Top" Width="320" TabIndex="3" IsTabStop="True" />
<Label Content="C:" Height="28" HorizontalAlignment="Left" Margin="342,59,0,0" Name="_labelC" VerticalAlignment="Top" />
<TextBox Name="_c" Height="20" HorizontalAlignment="Left" Margin="417,60,0,0" Text="{Binding CText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsEnabled="{Binding CEnabled}" VerticalAlignment="Top" Width="154" TabIndex="4" />
</Grid>
</GroupBox>
</Grid>