in src/AccessibilityInsights.SharedUx/Controls/PatternInfoControl.xaml.cs [234:254]
private void treePatterns_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Right && Keyboard.FocusedElement is TreeViewItem tvi && (tvi.IsExpanded || tvi.Items.Count == 0))
{
// Right arrow: first press expands; second press goes to button
var header = tvi.Template.FindName("PART_Header", tvi) as ContentPresenter;
var btn = header.ContentTemplate.FindName("buttonAction", header) as Button;
e.Handled = btn == null ? false : btn.Focus();
}
else if (e.Key == Key.Right && Keyboard.FocusedElement is Button)
{
// right arrow on button shouldn't do anything
e.Handled = true;
}
else if (e.Key == Key.Left && Keyboard.FocusedElement is Button btn &&
btn.TemplatedParent is ContentPresenter header && header.TemplatedParent is TreeViewItem tvi2)
{
// left arrow from button goes back to treeviewitem
e.Handled = tvi2.Focus();
}
}