这是我的第一个问题,如果我没有正确完成某事,那就很抱歉。
我在互联网上找不到关于这个话题的任何内容:
当我使用以下网格创建新的wpf应用程序时,Tab键顺序符合预期(第一个文本框,向下):
<Grid>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="95,95,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" />
<TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="23" Margin="95,160,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
<TextBox x:Name="textBox2" HorizontalAlignment="Left" Height="23" Margin="95,217,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
</Grid>
如果我在其中一个上设置Panel.ZIndex
,它会以不同的方式影响制表符索引(取决于哪一个)。这个是最值得注意的,因为它似乎颠倒了Tab键顺序:
<Grid>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="95,95,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" />
<TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="23" Margin="95,160,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" Panel.ZIndex="2"/>
<TextBox x:Name="textBox2" HorizontalAlignment="Left" Height="23" Margin="95,217,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
</Grid>
那么这是如何工作的? zindex是否真的会影响Tab键顺序,还是以某种方式创建一个新的选项卡组来保存具有相同zindex的控件?有没有办法阻止这一点,所以zindex根本没有影响?
我更喜欢不使用TabIndex
属性对标签顺序进行硬编码的解决方案。理想情况下,有一些方法可以防止zindex干扰
答案 0 :(得分:2)
如果您未设置_TabIndex_es, ZIndex 很重要。这是因为KeyboardNavigation使用VisualTreeHelper.GetChild()来查找下一个子节点(请参阅KeyboardNavigation source code中的GetNextSibling(...)),此方法首先返回较低_ZIndex_es的视觉效果。如果您对TabIndex进行硬编码,则一切都符合预期。