Wie lege ich die Tab-Reihenfolge in WPF fest? Ich habe ein ItemsControl, bei dem einige Elemente erweitert und einige reduziert sind, und möchte die reduzierten Elemente überspringen, wenn ich tippe.
Irgendwelche Ideen?
Wie lege ich die Tab-Reihenfolge in WPF fest? Ich habe ein ItemsControl, bei dem einige Elemente erweitert und einige reduziert sind, und möchte die reduzierten Elemente überspringen, wenn ich tippe.
Irgendwelche Ideen?
Antworten:
Sie können Elemente in der Registerkartenfolge überspringen, indem Sie KeyboardNavigation.IsTabStop für das Element in XAML festlegen.
KeyboardNavigation.IsTabStop="False"
Sie können einen Trigger einrichten, der diese Eigenschaft basierend auf dem erweiterten Status umschaltet.
Wenn Sie die Tabulatorreihenfolge für Elemente in Ihrem Formular explizit festlegen möchten, soll die folgende angehängte Eigenschaft helfen:
<Control KeyboardNavigation.TabIndex="0" ... />
Ich sage "soll helfen", da ich es nicht sehr zuverlässig fand, obwohl ich wahrscheinlich mehr darüber lesen muss, wie es verwendet werden soll. Ich poste diese halbherzige Antwort nur, weil sonst niemand diese Eigenschaft erwähnt hat.
Beachten Sie, dass in Win RT die Eigenschaft nur ist TabIndex="0"
.
<DockPanel Panel.ZIndex="2">
hilft, den Einstiegspunkt für Panels der obersten Ebene zu bestellen.
<Control KeyboardNavigation.TabIndex="0" ... />
Funktioniert einwandfrei ... Zum Beispiel-
<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" />
Ermöglicht das Navigieren durch diese beiden Kombinationsfelder mit der TAB-Taste.
Eine andere Alternative, die in der Vergangenheit für mich funktioniert hat, besteht darin, einfach alle expliziten TabIndex
Anweisungen zu entfernen und die Steuerelemente die Reihenfolge verwenden zu lassen, in der sie in XAML deklariert sind.
Dies kann natürlich erfordern, dass Sie Ihre Steuerelemente neu anordnen. Dies ist jedoch ein einfacher Vorgang zum Kopieren und Einfügen.
Sie können KeyboardNavigation.TabNavigation = "None" verwenden, um das Tabbing für ein bestimmtes Steuerelement vollständig zu überspringen.