in src/AccessibilityInsights.SharedUx/Controls/CustomControls/CustomDataGrid.cs [25:44]
private void CustomDataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{
var modKey = e.KeyboardDevice.Modifiers;
if (!(e.Key == Key.Tab) || !(modKey == ModifierKeys.None || modKey == ModifierKeys.Shift))
return;
var dir = modKey == ModifierKeys.Shift ? FocusNavigationDirection.Previous : FocusNavigationDirection.Next;
// keep trying to move focus until focused element is not a descendant of the datagrid
while (Keyboard.FocusedElement is Visual v && v.IsDescendantOf(this) && Keyboard.FocusedElement is FrameworkElement elem)
{
if (!elem.MoveFocus(new TraversalRequest(dir)))
{
break;
}
}
e.Handled = true;
}