FocusManager Класс

Определение

Предоставляет набор статических методов, вложенных свойств зависимостей и событий для определения и установки областей фокуса и для установки имеющих фокус элементов в данной области.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
Наследование
FocusManager

Комментарии

В Windows Presentation Foundation (WPF) есть два понятия, касающиеся фокуса: фокус клавиатуры и логический фокус.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. Этот элемент с фокусом клавиатуры имеет IsKeyboardFocused установлен в значение true.This element with keyboard focus has IsKeyboardFocused set to true. Keyboard.FocusedElement Возвращает элемент с фокусом клавиатуры.Keyboard.FocusedElement returns the element with keyboard focus.

Логический фокус относится к FocusManager.FocusedElement в определенной области фокуса.Logical focus pertains to the FocusManager.FocusedElement within a specific focus scope.

Область фокуса — это элемент-контейнер, который отслеживает FocusManager.FocusedElement в его области.A focus scope is a container element that keeps track of the FocusManager.FocusedElement within its scope. По умолчанию класс Window является областью фокуса, как и классы Menu, ContextMenuи ToolBar.By default, the Window class is a focus scope as are the Menu, ContextMenu, and ToolBar classes. Для элемента, который является областью фокуса, IsFocusScope задано значение true.An element that is a focus scope has IsFocusScope set to true.

Может существовать несколько элементов с логическим фокусом, но в одной области фокуса может быть только один элемент с логическим фокусом.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. В этом случае родительская и дочерняя области фокуса могут иметь FocusManager.FocusedElement.In this case, both the parent focus scope and the child focus scope can have a FocusManager.FocusedElement.

В следующем сценарии показано, как фокус клавиатуры и логическое изменение фокуса в приложении WPF с Window с TextBox и Menu с MenuItem.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. Когда фокус клавиатуры меняется с TextBox на MenuItem, TextBox теряет фокус клавиатуры, но удерживает логический фокус для Window области фокуса.When keyboard focus changes from the TextBox to the MenuItem, the TextBox losses keyboard focus but retains logical focus for the Window focus scope. MenuItem получает фокус клавиатуры и получает логический фокус для Menu области фокуса.The MenuItem obtains keyboard focus and obtains logical focus for the Menu focus scope. Когда фокус клавиатуры возвращается к корневому Window, элемент в Window области фокуса с логическим фокусом получит фокус клавиатуры, который в данном случае является TextBox.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. TextBox теперь имеет фокус клавиатуры и логический фокус.The TextBox now has keyboard focus and logical focus. MenuItem теряет фокус клавиатуры, но сохраняет логический фокус для Menu области фокуса.The MenuItem loses keyboard focus, but retains logical focus for the Menu focus scope.

Значение по умолчанию IsFocusScope для Window, Menu, ToolBarи ContextMenutrue.The default value of IsFocusScope on a Window, Menu, ToolBar, and ContextMenu is true.

Дополнительные сведения о фокусе см. в обзоре входных данных и в разделе Общие сведения о фокусе.For more information on focus, see the Input Overview and the Focus Overview.

Поля

FocusedElementProperty

Идентифицирует присоединенное свойство FocusedElement.Identifies the FocusedElement attached property.

GotFocusEvent

Идентифицирует присоединенное событие GotFocus.Identifies the GotFocus attached event.

IsFocusScopeProperty

Идентифицирует присоединенное свойство IsFocusScope.Identifies the IsFocusScope attached property.

LostFocusEvent

Идентифицирует присоединенное событие LostFocus.Identifies the LostFocus attached event.

Присоединенные свойства

FocusedElement

Определяет, имеет ли логический фокус тот элемент, в который вложено это свойство.Determines whether the element this property is attached to has logical focus.

IsFocusScope

Определяет, является ли областью фокуса тот элемент, к которому присоединено это свойство.Determines whether the element this property is attached to is a focus scope.

Методы

AddGotFocusHandler(DependencyObject, RoutedEventHandler)

Добавляет обработчик для вложенного события GotFocus.Adds a handler for the GotFocus attached event.

AddLostFocusHandler(DependencyObject, RoutedEventHandler)

Добавляет обработчик для вложенного события LostFocus.Adds a handler for the LostFocus attached event.

GetFocusedElement(DependencyObject)

Получает элемент с логическим фокусом в заданной области фокуса.Gets the element with logical focus within the specified focus scope.

GetFocusScope(DependencyObject)

Определяет ближайший наследник заданного элемента, у которого IsFocusScope имеет значение true.Determines the closest ancestor of the specified element that has IsFocusScope set to true.

GetIsFocusScope(DependencyObject)

Определяет, является ли заданный DependencyObject областью фокуса.Determines whether the specified DependencyObject is a focus scope.

RemoveGotFocusHandler(DependencyObject, RoutedEventHandler)

Удаляет обработчик присоединенного события GotFocus .Removes a handler for the GotFocus attached event.

RemoveLostFocusHandler(DependencyObject, RoutedEventHandler)

Удаляет обработчик для вложенного события LostFocus.Removes a handler for the LostFocus attached event.

SetFocusedElement(DependencyObject, IInputElement)

Устанавливает логический фокус на указанный элемент.Sets logical focus on the specified element.

SetIsFocusScope(DependencyObject, Boolean)

Задает заданный DependencyObject как область фокуса.Sets the specified DependencyObject as a focus scope.

Присоединенные события

GotFocus

Возникает, когда элемент получает фокус.Occurs when an element gets focus.

LostFocus

Возникает, когда элемент теряет фокус.Occurs when an element loses focus.

Применяется к