72

如何从既不属于窗口也不属于用户控件的代码中获取 WPF 中当前聚焦的元素/控件?

4

1 回答 1

138

这取决于您所追求的焦点类型,Logical或者Keyboard

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

通常,逻辑焦点是最后在该焦点范围上接收键盘焦点的元素。焦点范围可能是应用程序、表单、顶级窗口、选项卡等。换句话说,逻辑焦点是窗体或窗口如何记住哪个控件最后获得键盘焦点的方式。

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

IInputElement focusedControl = FocusManager.GetFocusedElement(this);

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

IInputElement focusedControl =  Keyboard.FocusedElement;
于 2013-10-15T22:50:42.157 回答