Jako uživatel windows aplikací se řadím spíše mezi takzvané klikače, proto mi velice často unikají ve vývoji potřeby příznivců tzv. klávesovačů - čili uživatelů vyplňujících okna pomocí klávesnice a klávesových zkratek. Takže tyto detajly musím dolaďovat jako vývojář v závěrečné fázi před nasazením.
Pokud si okno skládáte ručně, tak si zpravidla vystačíte s nastavováním TabIndexů, které určí pořadí editace při stisknutí klávesy Tab. Jelikož mám editor postavený dynamicky přes ItemsControl, tak jsem TabIndex nevyužil. Klávesou Tab naviguji z jedné položky ItemsControl na druhou.
Celkem zajímavá je ale možnost ale ovlivnit možnost navigace klávesnící ItemsControl, připadně v jiném kontejnéru.
Navigaci klávesnící ovlivním snadno přes třídu - KeyboardNavigation.
V MSDN si o tom můžete přečíst ZDE.
Navigaci přes Tabulátor ovlivníte - KeyboardNavigation.TabNavigation
Směrovou navigaci přes šipky ovlivníte - KeyboardNavigation.DirectionalNavigation
A možnosti jsou následující: Contained, Continue, Cycle, Local, None, Once
Nejlépe je si chování vyzkoušet na příkladu:
<GroupBox Header="Check Boxes" KeyboardNavigation.TabNavigation="Once"
Height="126" HorizontalAlignment="Left"
VerticalAlignment="Top" Width="200">
<StackPanel Margin="8">
<CheckBox Content="Check Box 1"/>
<CheckBox Content="Check Box 2"/>
<CheckBox Content="Check Box 3"/>
<CheckBox Content="Check Box 4"/>
<CheckBox Content="Check Box 5"/>
</StackPanel>
</GroupBox>
<GroupBox x:Name="gbRadio" Header="Radio Buttons" Height="126" VerticalAlignment="Top" Margin="206,0,107,0">
<StackPanel Margin="8">
<RadioButton x:Name="radio1" Content="Radio Button 1"/>
<RadioButton Content="Radio Button 2"/>
<RadioButton Content="Radio Button 3"/>
<RadioButton Content="Radio Button 4"/>
<RadioButton Content="Radio Button 5"/>
</StackPanel>
</GroupBox>
A přitom taková blbost, ale potěší :).