在WPF窗口中获取当前关注的元素/控件

时间:2013-10-15 22:15:19

标签: .net wpf focus

如何从既不是窗口也不是用户控件的代码中获取WPF中当前关注的元素/控件?

1 个答案:

答案 0 :(得分:99)

这取决于您所关注的焦点类型,LogicalKeyboard

  • 键盘焦点是指当前接收键盘输入的元素。整个桌面中只有一个元素可以使用键盘焦点。
  • 逻辑焦点是指 接收键盘输入的焦点范围中的元素,如果焦点范围处于活动状态。

通常,逻辑焦点是最后在该焦点范围内接收键盘焦点的元素。焦点范围可以是应用程序,表单,顶级窗口,选项卡等。换句话说,逻辑焦点是表单或窗口如何记住最后具有键盘焦点的控件。

FocusManager获取具有逻辑焦点的元素在指定的焦点范围内,在本例中为Window(this):

IInputElement focusedControl = FocusManager.GetFocusedElement(this);

Keyboard将返回具有当前键盘输入焦点的元素:

IInputElement focusedControl =  Keyboard.FocusedElement;