72

ウィンドウでもユーザーコントロールでもないコードから、WPF で現在フォーカスされている要素/コントロールを取得するにはどうすればよいですか?

4

1 に答える 1

138

それは、あなたが求めているフォーカスのタイプ、LogicalまたはKeyboard.

  • キーボード フォーカスは、現在キーボード入力を受け取る要素を参照します。デスクトップ全体で 1 つの要素だけがキーボード フォーカスを持つことができます。
  • 論理フォーカスとは、フォーカス スコープがアクティブな場合にキーボード入力を受け取るフォーカススコープ内の要素を指します。

通常、論理フォーカスは、そのフォーカス スコープでキーボード フォーカスを最後に受け取った要素です。フォーカス スコープは、アプリ、フォーム、トップ レベル ウィンドウ、タブなどです。つまり、論理フォーカスとは、どのコントロールが最後にキーボード フォーカスを持っていたかをフォームまたはウィンドウが記憶する方法です。

FocusManager指定されたフォーカス スコープ内の論理フォーカスを持つ要素を取得します。この場合は Window ( this):

IInputElement focusedControl = FocusManager.GetFocusedElement(this);

Keyboard現在のキーボード入力フォーカスを持つ要素を返します。

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