Dot-Net

在 WPF 視窗中獲取目前聚焦的元素/控制項

  • October 15, 2013

如何從既不屬於視窗也不屬於使用者控制項的程式碼中獲取 WPF 中目前聚焦的元素/控制項?

這取決於您所追求的焦點類型,Logical或者Keyboard

  • 鍵盤焦點是指目前接收鍵盤輸入的元素。整個桌面中只有一個元素可以擁有鍵盤焦點。
  • 邏輯焦點是指焦點範圍中的元素,如果焦點範圍處於活動狀態,它將接收鍵盤輸入。

通常,邏輯焦點是最後在該焦點範圍上接收鍵盤焦點的元素。焦點範圍可能是應用程序、表單、頂級視窗、選項卡等。換句話說,邏輯焦點是窗體或視窗如何記住哪個控制項最後獲得鍵盤焦點的方式。

FocusManager獲取指定焦點範圍內具有邏輯焦點的元素,在本例中為 Window ( this):

IInputElement focusedControl = FocusManager.GetFocusedElement(this);

Keyboard將返回具有目前鍵盤輸入焦點的元素:

IInputElement focusedControl =  Keyboard.FocusedElement;

引用自:https://stackoverflow.com/questions/19392036