如何从既不属于窗口也不属于用户控件的代码中获取 WPF 中当前聚焦的元素/控件?
这取决于你所追求的焦点类型,Logical或 Keyboard。
Logical
Keyboard
通常,逻辑焦点是最后一次收到键盘焦点的元素。焦点范围可能是一个应用程序、一个窗体、一个顶层窗口、一个选项卡等等。换句话说,逻辑焦点是窗体或窗口如何记住最后一次拥有键盘焦点的控件。
FocusManager获取具有指定焦点范围内的逻辑焦点的元素,在本例中为 Window (this) :
FocusManager
this
IInputElement focusedControl = FocusManager.GetFocusedElement(this);
Keyboard将返回具有当前键盘输入焦点的元素:
IInputElement focusedControl = Keyboard.FocusedElement;