Como eu defino a ordem das guias no WPF? Eu tenho um ItemsControl com alguns itens expandidos e outros recolhidos e gostaria de pular os recolhidos quando estou tabulando.
Alguma ideia?
Como eu defino a ordem das guias no WPF? Eu tenho um ItemsControl com alguns itens expandidos e outros recolhidos e gostaria de pular os recolhidos quando estou tabulando.
Alguma ideia?
Respostas:
Você pode ignorar elementos na sequência de guias definindo KeyboardNavigation.IsTabStop no elemento em XAML.
KeyboardNavigation.IsTabStop="False"
Você pode configurar um gatilho que alterne essa propriedade com base no estado expandido.
Se você deseja definir explicitamente a ordem das guias para os elementos do formulário, a seguinte propriedade anexada deve ajudar:
<Control KeyboardNavigation.TabIndex="0" ... />
Digo "supostamente ajuda" porque não o achei muito confiável, embora provavelmente precise ler mais sobre como ele deve ser usado. Eu só posto esta resposta incompleta porque ninguém mais mencionou esta propriedade.
Observe que no Win RT, a propriedade é justa TabIndex="0"
.
<DockPanel Panel.ZIndex="2">
ajuda a solicitar o ponto de entrada dos painéis de nível superior.
<Control KeyboardNavigation.TabIndex="0" ... />
Funciona perfeitamente bem ... Por exemplo-
<ComboBox Height="23"
Margin="148,24,78,0"
Name="comboBoxDataSet"
VerticalAlignment="Top"
SelectionChanged="comboBoxDestMarketDataSet_SelectionChanged"
DropDownOpened="comboBoxDestMarketDataSet_DropDownOpened"
KeyboardNavigation.TabIndex="0" />
<ComboBox Height="23"
Margin="148,56,78,0"
Name="comboBoxCategory"
VerticalAlignment="Top"
SelectionChanged="comboBoxDestCategory_SelectionChanged"
DropDownOpened="comboBoxDestCategory_DropDownOpened"
KeyboardNavigation.TabIndex="1" />
Permitirá que você navegue por essas duas caixas de combinação usando a tecla TAB.
Outra alternativa que funcionou para mim no passado é simplesmente remover todas as TabIndex
instruções explícitas e deixar os controles usarem a ordem em que são declarados no XAML para fazer sua mágica.
Isso, é claro, pode exigir que você reordene seus controles. Mas esta é uma operação simples de copiar e colar.
Você pode usar KeyboardNavigation.TabNavigation = "None" para pular completamente a Tabulação para controle específico.