private static void OnGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) { ListBox listbox = (ListBox)sender; // Focus drives the selection when keyboardnavigation is used if (!KeyboardNavigation.IsKeyboardMostRecentInputDevice()) { return; } // Only in case focus moves from one ListBoxItem to another we want the selection to follow focus ListBoxItem newListBoxItem = e.NewFocus as ListBoxItem; if (newListBoxItem != null && ItemsControlFromItemContainer(newListBoxItem) == listbox) { DependencyObject oldFocus = e.OldFocus as DependencyObject; Visual visualOldFocus = oldFocus as Visual; if (visualOldFocus == null) { ContentElement ce = oldFocus as ContentElement; if (ce != null) { visualOldFocus = KeyboardNavigation.GetParentUIElementFromContentElement(ce); } } if ((visualOldFocus != null && listbox.IsAncestorOf(visualOldFocus)) || oldFocus == listbox) { listbox.LastActionItem = newListBoxItem; listbox.MakeKeyboardSelection(newListBoxItem); } } }
// Token: 0x06005134 RID: 20788 RVA: 0x0016C6E8 File Offset: 0x0016A8E8 private static void OnGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) { ListBox listBox = (ListBox)sender; if (!KeyboardNavigation.IsKeyboardMostRecentInputDevice()) { return; } ListBoxItem listBoxItem = e.NewFocus as ListBoxItem; if (listBoxItem != null && ItemsControl.ItemsControlFromItemContainer(listBoxItem) == listBox) { DependencyObject dependencyObject = e.OldFocus as DependencyObject; Visual visual = dependencyObject as Visual; if (visual == null) { ContentElement contentElement = dependencyObject as ContentElement; if (contentElement != null) { visual = KeyboardNavigation.GetParentUIElementFromContentElement(contentElement); } } if ((visual != null && listBox.IsAncestorOf(visual)) || dependencyObject == listBox) { listBox.LastActionItem = listBoxItem; listBox.MakeKeyboardSelection(listBoxItem); } } }