Jak ustawić kolejność kart w WPF? Mam ItemsControl z niektórymi elementami rozwiniętymi, a niektórymi zwiniętymi i chciałbym pominąć zwinięte elementy, gdy używam tabulatora.
Jakieś pomysły?
Jak ustawić kolejność kart w WPF? Mam ItemsControl z niektórymi elementami rozwiniętymi, a niektórymi zwiniętymi i chciałbym pominąć zwinięte elementy, gdy używam tabulatora.
Jakieś pomysły?
Odpowiedzi:
Możesz pominąć elementy w sekwencji kart, ustawiając KeyboardNavigation.IsTabStop w elemencie w języku XAML.
KeyboardNavigation.IsTabStop="False"
Możesz skonfigurować wyzwalacz, który przełączałby tę właściwość na podstawie stanu rozwiniętego.
Jeśli chcesz jawnie ustawić kolejność tabulatorów dla elementów w swoim formularzu, powinna pomóc następująca załączona właściwość:
<Control KeyboardNavigation.TabIndex="0" ... />
Mówię „powinien pomóc”, ponieważ nie uważam go za bardzo niezawodny, chociaż prawdopodobnie muszę przeczytać więcej o tym, jak ma być używany. Publikuję tylko tę niedopracowaną odpowiedź, ponieważ nikt inny nie wspomniał o tej właściwości.
Zwróć uwagę, że w Win RT właściwość jest just TabIndex="0"
.
<DockPanel Panel.ZIndex="2">
pomaga zamówić punkt wejścia do paneli najwyższego poziomu.
<Control KeyboardNavigation.TabIndex="0" ... />
Działa doskonale ... Na przykład-
<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" />
Pozwoli ci poruszać się po tych dwóch polach kombi za pomocą klawisza TAB.
Inną alternatywą, która działała dla mnie w przeszłości, jest po prostu usunięcie wszystkich jawnych TabIndex
instrukcji i pozwolenie kontrolkom na użycie kolejności, w jakiej są zadeklarowane w XAML, aby działały magicznie.
Może to oczywiście wymagać zmiany kolejności elementów sterujących. Ale to jest prosta operacja kopiuj-wklej.
Możesz użyć KeyboardNavigation.TabNavigation = "None", aby całkowicie pominąć tabulację w celu uzyskania określonej kontroli.