2017-02-15 3 views
2

Это мой первый вопрос, извините, если я не сделал что-то правильно.Как z-index влияет на порядок вкладок?

Я ничего не могу найти в интернете по этой теме:

Когда я создаю новое приложение WPF с помощью следующей сетки, порядок обхода, как и ожидалось (первое текстовое поле, вниз):

<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 на один из них, это может повлиять на индекс вкладки различными способами (в зависимости от того, какой из них). Этот показатель является самым заметным, поскольку, похоже, он отменяет порядок вкладок:

<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 влияет на порядок вкладок или каким-то образом создает новую группу вкладок для хранения элементов управления с тем же zindex? Есть ли способ остановить это, так что zindex вообще не влияет?

Я бы предпочел решение, которое не требует жесткого кодирования порядка вкладок с использованием свойства TabIndex. В идеале был бы какой-то способ предотвратить помехи от zindex

+0

Чтобы убедиться, что «жестко кодируя порядок вкладок» вы подразумеваете использование права собственности «TabIndex»? –

+0

Да, я знаю. Извините, если это было непонятно –

ответ

2

Если вы не задали _TabIndex_es, вопросы ZIndex. Это связано с тем, что KeyboardNavigation использует VisualTreeHelper.GetChild() для поиска следующего дочернего элемента (см. GetNextSibling (...) в KeyboardNavigation source code), и этот метод сначала возвращает визуальные эффекты с более низким _ZIndex_es. Если вы жестко скопируете TabIndex, все будет как ожидается.

Смежные вопросы