in src/AccessibilityInsights.SharedUx/Controls/TestTabs/AutomatedChecksControl.xaml.cs [856:912]
private void GroupItem_PreviewKeyDown(object sender, KeyEventArgs e)
{
var listViewItemParent = GetParentElem<ListViewItem>(Keyboard.FocusedElement as DependencyObject);
if (Keyboard.FocusedElement is ListViewItem || listViewItemParent != null)
{
// Let it be handled by the listviewitem previewkeydown handler
// - this groupitem_previewkeydown event fires first
return;
}
var gi = sender as GroupItem;
var sp = GetFirstChildElement<StackPanel>(gi) as StackPanel;
var exp = GetParentElem<Expander>(sp) as Expander;
if (e.Key == Key.Right)
{
if (!exp.IsExpanded)
{
exp.IsExpanded = true;
}
e.Handled = true;
}
else if (e.Key == Key.Left)
{
if (exp.IsExpanded)
{
exp.IsExpanded = false;
}
e.Handled = true;
}
else if ((e.Key == Key.Space || e.Key == Key.Enter) && Keyboard.FocusedElement == sender)
{
var cb = GetFirstChildElement<CheckBox>(exp) as CheckBox;
cb.IsChecked = !cb.IsChecked ?? false;
CheckBox_Click(cb, null);
e.Handled = true;
}
else if (e.Key == Key.Down)
{
if (!exp.IsExpanded)
{
gi.MoveFocus(new TraversalRequest(FocusNavigationDirection.Down));
}
else
{
ListViewItem firstResult = GetFirstChildElement<ListViewItem>(exp) as ListViewItem;
firstResult.Focus();
}
e.Handled = true;
}
else if (e.Key == Key.Up)
{
gi.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up));
e.Handled = true;
}
}