FocusManager クラス


フォーカス範囲を決定し設定するため、およびその範囲内でフォーカスされた要素を設定するための静的メソッド、添付プロパティ、およびイベントを提供します。Provides a set of static methods, attached properties, and events for determining and setting focus scopes and for setting the focused element within the scope.

public ref class FocusManager abstract sealed
public static class FocusManager
type FocusManager = class
Public Class FocusManager


Windows Presentation Foundation (WPF) には、フォーカスに関して、キーボードフォーカスと論理フォーカスという2つの概念があります。In Windows Presentation Foundation (WPF) there are two concepts concerning focus: keyboard focus and logical focus.

キーボードフォーカスは、現在キーボード入力を受け取っている要素に関連します。Keyboard focus pertains to the element that is currently receiving keyboard input. キーボードフォーカスを持つ要素は1つだけ存在できます。There can be only one element with keyboard focus. キーボードフォーカスを持つこの要素は、trueに設定 IsKeyboardFocused ます。This element with keyboard focus has IsKeyboardFocused set to true. Keyboard.FocusedElement は、キーボードフォーカスを持つ要素を返します。Keyboard.FocusedElement returns the element with keyboard focus.

論理フォーカスは、特定のフォーカス範囲内の FocusManager.FocusedElement に関連します。Logical focus pertains to the FocusManager.FocusedElement within a specific focus scope.

フォーカス範囲は、そのスコープ内の FocusManager.FocusedElement を追跡するコンテナー要素です。A focus scope is a container element that keeps track of the FocusManager.FocusedElement within its scope. 既定では、Window クラスは、MenuContextMenu、および ToolBar クラスとしてフォーカス範囲となります。By default, the Window class is a focus scope as are the Menu, ContextMenu, and ToolBar classes. フォーカス範囲である要素が trueに設定されて IsFocusScopeAn element that is a focus scope has IsFocusScope set to true.

論理フォーカスを持つ複数の要素が存在する場合がありますが、1つのフォーカススコープ内に論理フォーカスがある要素は1つだけ存在できます。There can be multiple elements with logical focus, but there can only be one element with logical focus within a single focus scope. 論理フォーカスを持つ要素は、必ずしもキーボードフォーカスを持つとは限りませんが、キーボードフォーカスを持つ要素は論理フォーカスを持ちます。An element with logical focus does not necessarily have keyboard focus, but an element with keyboard focus will have logical focus. フォーカス範囲は、フォーカススコープ内で定義できます。It is possible to define a focus scope within a focus scope. この場合、親のフォーカス範囲と子のフォーカス範囲の両方に FocusManager.FocusedElementを含めることができます。In this case, both the parent focus scope and the child focus scope can have a FocusManager.FocusedElement.

次のシナリオでは、TextBox を持つ WindowMenuItemを持つ Menu を持つ WPF アプリケーションで、キーボードフォーカスと論理フォーカスがどのように変化するかを示します。The following scenario illustrates how keyboard focus and logical focus change in a WPF application that has a Window with a TextBox and a Menu that has a MenuItem. キーボードフォーカスが TextBox から MenuItemに変更された場合、TextBox はキーボードフォーカスを損失しますが、Window のフォーカス範囲の論理フォーカスを保持します。When keyboard focus changes from the TextBox to the MenuItem, the TextBox losses keyboard focus but retains logical focus for the Window focus scope. MenuItem は、キーボードフォーカスを取得し、Menu のフォーカス範囲の論理フォーカスを取得します。The MenuItem obtains keyboard focus and obtains logical focus for the Menu focus scope. キーボードフォーカスがルート Windowに戻ると、論理フォーカスを持つフォーカス範囲 Window の要素はキーボードフォーカスを取得します。この例では TextBoxです。When keyboard focus returns to the root Window, the element in Window focus scope with logical focus will obtain keyboard focus, which in this case is the TextBox. TextBox にキーボードフォーカスと論理フォーカスがあるようになりました。The TextBox now has keyboard focus and logical focus. MenuItem はキーボードフォーカスを失いますが、Menu フォーカス範囲の論理フォーカスを保持します。The MenuItem loses keyboard focus, but retains logical focus for the Menu focus scope.

WindowMenuToolBar、および ContextMenu での IsFocusScope の既定値は trueです。The default value of IsFocusScope on a Window, Menu, ToolBar, and ContextMenu is true.

フォーカスの詳細については、「入力の概要」と「フォーカスの概要」を参照してください。For more information on focus, see the Input Overview and the Focus Overview.



FocusedElement 添付プロパティを識別します。Identifies the FocusedElement attached property.


GotFocus 添付イベントを識別します。Identifies the GotFocus attached event.


IsFocusScope 添付プロパティを識別します。Identifies the IsFocusScope attached property.


LostFocus 添付イベントを識別します。Identifies the LostFocus attached event.



このプロパティが添付される要素に論理フォーカスがあるかどうかを判断します。Determines whether the element this property is attached to has logical focus.


このプロパティが添付される要素がフォーカス範囲であるかどうかを判断します。Determines whether the element this property is attached to is a focus scope.


AddGotFocusHandler(DependencyObject, RoutedEventHandler)

GotFocus 添付イベントのハンドラーを追加します。Adds a handler for the GotFocus attached event.

AddLostFocusHandler(DependencyObject, RoutedEventHandler)

LostFocus 添付イベントのハンドラーを追加します。Adds a handler for the LostFocus attached event.


指定したフォーカス範囲内で論理フォーカスを持つ要素を取得します。Gets the element with logical focus within the specified focus scope.


true に設定された IsFocusScope を持ち、指定した要素に最も近い先祖を決定します。Determines the closest ancestor of the specified element that has IsFocusScope set to true.


指定した DependencyObject がフォーカス範囲であるかどうかを確認します。Determines whether the specified DependencyObject is a focus scope.

RemoveGotFocusHandler(DependencyObject, RoutedEventHandler)

GotFocus 添付イベントのハンドラーを削除します。Removes a handler for the GotFocus attached event.

RemoveLostFocusHandler(DependencyObject, RoutedEventHandler)

LostFocus 添付イベントのハンドラーを削除します。Removes a handler for the LostFocus attached event.

SetFocusedElement(DependencyObject, IInputElement)

指定した要素に論理フォーカスを設定します。Sets logical focus on the specified element.

SetIsFocusScope(DependencyObject, Boolean)

指定した DependencyObject をフォーカス範囲として設定します。Sets the specified DependencyObject as a focus scope.



要素がフォーカスを取得すると発生します。Occurs when an element gets focus.


要素がフォーカスを失ったときに発生します。Occurs when an element loses focus.