Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Provides a set of static methods, attached properties, and events for determining and setting focus scopes and for setting the focused element within the scope.
public ref class FocusManager abstract sealed
public static class FocusManager
type FocusManager = class
Public Class FocusManager
In Windows Presentation Foundation (WPF) there are two concepts concerning focus: keyboard focus and logical focus.
Keyboard focus pertains to the element that is currently receiving keyboard input. There can be only one element with keyboard focus. This element with keyboard focus has IsKeyboardFocused set to
true. Keyboard.FocusedElement returns the element with keyboard focus.
Logical focus pertains to the FocusManager.FocusedElement within a specific focus scope.
A focus scope is a container element that keeps track of the FocusManager.FocusedElement within its scope. By default, the Window class is a focus scope as are the Menu, ContextMenu, and ToolBar classes. An element that is a focus scope has IsFocusScope set to
There can be multiple elements with logical focus, but there can only be one element with logical focus within a single focus scope. An element with logical focus does not necessarily have keyboard focus, but an element with keyboard focus will have logical focus. It is possible to define a focus scope within a focus scope. In this case, both the parent focus scope and the child focus scope can have a FocusManager.FocusedElement.
The following scenario illustrates how keyboard focus and logical focus change in a WPF application that has a Window with a TextBox and a Menu that has a MenuItem. When keyboard focus changes from the TextBox to the MenuItem, the TextBox losses keyboard focus but retains logical focus for the Window focus scope. The MenuItem obtains keyboard focus and obtains logical focus for the Menu focus scope. When keyboard focus returns to the root Window, the element in Window focus scope with logical focus will obtain keyboard focus, which in this case is the TextBox. The TextBox now has keyboard focus and logical focus. The MenuItem loses keyboard focus, but retains logical focus for the Menu focus scope.
The default value of IsFocusScope on a Window, Menu, ToolBar, and ContextMenu is
For more information on focus, see the Input Overview and the Focus Overview.
Identifies the FocusedElement attached property.
Identifies the GotFocus attached event.
Identifies the IsFocusScope attached property.
Identifies the LostFocus attached event.
Determines whether the element this property is attached to has logical focus.
Determines whether the element this property is attached to is a focus scope.
Adds a handler for the GotFocus attached event.
Adds a handler for the LostFocus attached event.
Gets the element with logical focus within the specified focus scope.
Determines the closest ancestor of the specified element that has IsFocusScope set to
Determines whether the specified DependencyObject is a focus scope.
Removes a handler for the GotFocus attached event.
Removes a handler for the LostFocus attached event.
Sets logical focus on the specified element.
Sets the specified DependencyObject as a focus scope.
Occurs when an element gets focus.
Occurs when an element loses focus.