Come si imposta l'ordine di tabulazione in WPF? Ho un ItemsControl con alcuni elementi espansi e alcuni compressi e vorrei saltare quelli compressi durante la tabulazione.
Qualche idea?
Come si imposta l'ordine di tabulazione in WPF? Ho un ItemsControl con alcuni elementi espansi e alcuni compressi e vorrei saltare quelli compressi durante la tabulazione.
Qualche idea?
Risposte:
Puoi ignorare gli elementi nella sequenza di tabulazione impostando KeyboardNavigation.IsTabStop sull'elemento in XAML.
KeyboardNavigation.IsTabStop="False"
È possibile impostare un trigger che attivi questa proprietà in base allo stato espanso.
Se vuoi impostare esplicitamente l'ordine di tabulazione per gli elementi nel tuo modulo, la seguente proprietà allegata dovrebbe aiutare:
<Control KeyboardNavigation.TabIndex="0" ... />
Dico "dovrebbe aiutare" perché non l'ho trovato molto affidabile anche se probabilmente ho bisogno di leggere di più su come dovrebbe essere utilizzato. Inserisco solo questa risposta a metà perché nessun altro ha menzionato questa proprietà.
Nota che in Win RT, la proprietà è solo TabIndex="0"
.
<DockPanel Panel.ZIndex="2">
aiuti a ordinare il punto di ingresso dei pannelli di livello superiore.
<Control KeyboardNavigation.TabIndex="0" ... />
Funziona perfettamente bene ... Ad esempio-
<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" />
Ti permetterà di navigare attraverso queste due caselle combinate usando il tasto TAB.
Un'altra alternativa che ha funzionato per me in passato è semplicemente rimuovere tutto ciò che è esplicito TabIndex
istruzioni e lasciare che i controlli utilizzino l'ordine in cui sono dichiarati in XAML.
Questo, ovviamente, potrebbe richiedere di riordinare i controlli. Ma questa è una semplice operazione di copia-incolla.
Puoi utilizzare KeyboardNavigation.TabNavigation = "None" per saltare completamente il Tabbing per un controllo specifico.