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

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

62311 次浏览

这取决于你所追求的焦点类型,LogicalKeyboard

  • 键盘焦点 指的是 目前接收键盘输入的元素。整个桌面中只有一个元素可以有键盘焦点。
  • 逻辑焦点 指的是焦点范围内的元素,接收键盘输入,如果的焦点范围是活动的。

通常,逻辑焦点是最后一次收到键盘焦点的元素。焦点范围可能是一个应用程序、一个窗体、一个顶层窗口、一个选项卡等等。换句话说,逻辑焦点是窗体或窗口如何记住最后一次拥有键盘焦点的控件。

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

IInputElement focusedControl = FocusManager.GetFocusedElement(this);

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

IInputElement focusedControl =  Keyboard.FocusedElement;