private static void OnKeyboardInputProviderAcquireFocus(object sender, KeyboardInputProviderAcquireFocusEventArgs e) { if (!IsCurrentThreadMainUiThread()) { return; } if (!(sender is DependencyObject dependencyObject) || !IsRegisteredCommandFocusElement(dependencyObject)) { return; } if (dependencyObject is IInputElement inputElement && !inputElement.IsKeyboardFocusWithin) { if (e.RoutedEvent == Keyboard.PreviewKeyboardInputProviderAcquireFocusEvent) { if (!IsAttachedCommandFocusElement(dependencyObject)) { CurrentMenuModeSource = PresentationSource.FromDependencyObject(dependencyObject); } } else if (!e.FocusAcquired) { CurrentMenuModeSource = null; } } if (PresentationSource.FromDependencyObject(dependencyObject) != null) { return; } e.Handled = true; }
// Token: 0x06005E76 RID: 24182 RVA: 0x001A7864 File Offset: 0x001A5A64 private static void OnKeyboardInputProviderAcquireFocus(object sender, KeyboardInputProviderAcquireFocusEventArgs e) { MenuBase menuBase = (MenuBase)sender; if (!menuBase.IsKeyboardFocusWithin && !e.FocusAcquired && menuBase.IsAcquireFocusMenuMode) { menuBase.PopMenuMode(); } }
// This method ensures that whenever focus is not acquired // but MenuMode has been pushed with the expection, a // corresponding PopMenu is performed. private static void OnKeyboardInputProviderAcquireFocus(object sender, KeyboardInputProviderAcquireFocusEventArgs e) { MenuBase menu = (MenuBase)sender; if (!menu.IsKeyboardFocusWithin && !e.FocusAcquired && menu.IsAcquireFocusMenuMode) { Debug.Assert(menu.HasPushedMenuMode); // The input provider did not acquire focus. So we will not // succeed in setting focus to the desired element within the // menu. menu.PopMenuMode(); } }
// This method ensures that whenever focus is given to an element // within a menu, that the menu enters menu mode. This can't be // done with a simple IsFocusWithin changed handler because we // need to actually enter menu mode before focus changes. private static void OnPreviewKeyboardInputProviderAcquireFocus(object sender, KeyboardInputProviderAcquireFocusEventArgs e) { MenuBase menu = (MenuBase)sender; // If we haven't already pushed menu mode, we need to do it before // focus enters the menu for the first time if (!menu.IsKeyboardFocusWithin && !menu.HasPushedMenuMode) { // Call PushMenuMode just before focus enters the menu... menu.PushMenuMode(/*isAcquireFocusMenuMode*/ true); } }
private void Button_KeyboardInputProviderAcquireFocus(object sender, KeyboardInputProviderAcquireFocusEventArgs e) { }
// Token: 0x06005E75 RID: 24181 RVA: 0x001A7838 File Offset: 0x001A5A38 private static void OnPreviewKeyboardInputProviderAcquireFocus(object sender, KeyboardInputProviderAcquireFocusEventArgs e) { MenuBase menuBase = (MenuBase)sender; if (!menuBase.IsKeyboardFocusWithin && !menuBase.HasPushedMenuMode) { menuBase.PushMenuMode(true); } }