FocusManager 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供一组静态方法、附加属性和事件,用于确定和设置焦点范围以及设置该范围内具有焦点的元素。
public ref class FocusManager abstract sealed
public static class FocusManager
type FocusManager = class
Public Class FocusManager
- 继承
-
FocusManager
注解
在Windows Presentation Foundation (WPF) 有两个有关焦点的概念:键盘焦点和逻辑焦点。
键盘焦点与当前接收键盘输入的元素相关。 只能有一个具有键盘焦点的元素。 此具有键盘焦点的元素已 IsKeyboardFocused 设置为 true
。
Keyboard.FocusedElement 返回具有键盘焦点的 元素。
逻辑焦点与 FocusManager.FocusedElement 特定焦点范围内的 相关。
焦点范围是一个容器元素,用于跟踪其范围内的 FocusManager.FocusedElement。 默认情况下,Window类与 、 ContextMenu和 ToolBar 类一样Menu是焦点范围。 作为焦点范围的元素已 IsFocusScope 设置为 true
。
可以有多个具有逻辑焦点的元素,但在单个焦点范围内只能有一个具有逻辑焦点的元素。 具有逻辑焦点的元素不一定具有键盘焦点,但具有键盘焦点的元素将具有逻辑焦点。 可以在焦点范围内定义焦点范围。 在这种情况下,父焦点范围和子焦点范围都可以具有 FocusManager.FocusedElement。
以下方案演示了键盘焦点和逻辑焦点在具有 Window 的 WPF 应用程序中如何更改,而 WPF 应用程序中具有 , TextBox 并且 Menu 具有 MenuItem。 当键盘焦点从 TextBoxMenuItem更改为 时,会 TextBox 失去键盘焦点,但保留焦点范围的逻辑焦点 Window 。 获取 MenuItem 键盘焦点,并获取焦点范围的逻辑 Menu 焦点。 当键盘焦点返回到根 Window时,具有逻辑焦点的焦点范围中的 Window 元素将获得键盘焦点,在本例中为 TextBox。 TextBox现在具有键盘焦点和逻辑焦点。 失去 MenuItem 键盘焦点,但保留焦点范围的逻辑焦点 Menu 。
、Menu、 ToolBar和 ContextMenu 上的Window默认值IsFocusScope为 true
。
字段
FocusedElementProperty |
标识 FocusedElement 附加属性。 |
GotFocusEvent |
标识 GotFocus 附加事件。 |
IsFocusScopeProperty |
标识 IsFocusScope 附加属性。 |
LostFocusEvent |
标识 LostFocus 附加事件。 |
附加属性
FocusedElement |
确定此属性附加到的元素是否具有逻辑焦点。 |
IsFocusScope |
确定此属性附加到的元素是否是焦点范围。 |
方法
AddGotFocusHandler(DependencyObject, RoutedEventHandler) |
为 GotFocus 附加事件添加处理程序。 |
AddLostFocusHandler(DependencyObject, RoutedEventHandler) |
为 LostFocus 附加事件添加处理程序。 |
GetFocusedElement(DependencyObject) |
获取在指定焦点范围内具有逻辑焦点的元素。 |
GetFocusScope(DependencyObject) |
确定指定元素的 IsFocusScope 设置为 |
GetIsFocusScope(DependencyObject) |
确定指定的 DependencyObject 是否为焦点范围。 |
RemoveGotFocusHandler(DependencyObject, RoutedEventHandler) |
移除 GotFocus 附加事件的处理程序。 |
RemoveLostFocusHandler(DependencyObject, RoutedEventHandler) |
移除 LostFocus 附加事件的处理程序。 |
SetFocusedElement(DependencyObject, IInputElement) |
对指定元素设置逻辑焦点。 |
SetIsFocusScope(DependencyObject, Boolean) |
将指定的 DependencyObject 设置为焦点范围。 |
附加活动
GotFocus |
当元素获得焦点时发生。 |
LostFocus |
当元素丢失焦点时发生。 |