다음을 통해 공유


FocusManager 클래스

정의

포커스 범위를 확인 및 설정하고 범위 내에서 포커스가 있는 요소를 설정하기 위한 정적 메서드, 연결된 속성 및 이벤트의 집합을 제공합니다.

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

설명

WPF(Windows Presentation Foundation)에는 포커스와 관련된 두 가지 개념인 키보드 포커스와 논리적 포커스가 있습니다.

키보드 포커스는 현재 키보드 입력을 수신하는 요소와 관련이 있습니다. 키보드 포커스가 있는 요소는 하나만 있을 수 있습니다. 키보드 포커스가 있는 이 요소는 로 설정true되었습니다IsKeyboardFocused. Keyboard.FocusedElement 는 키보드 포커스가 있는 요소를 반환합니다.

논리적 포커스는 FocusManager.FocusedElement 특정 포커스 scope 내의 에 관련됩니다.

포커스 범위는 범위 내에서 FocusManager.FocusedElement를 추적하는 컨테이너 요소입니다. 기본적으로 Window 클래스는 , ContextMenuToolBar 클래스와 마찬가지로 Menuscope 포커스입니다. 포커스 scope 요소가 로 설정true되었습니다IsFocusScope.

논리적 포커스가 있는 요소가 여러 개 있을 수 있지만 단일 포커스 scope 내에서 논리적 포커스가 있는 요소는 하나만 있을 수 있습니다. 논리적 포커스가 있는 요소에 반드시 키보드 포커스가 있는 것은 아니지만 키보드 포커스가 있는 요소에는 논리적 포커스가 있습니다. 포커스 scope 내에서 포커스 scope 정의할 수 있습니다. 이 경우 부모 포커스 scope 자식 포커스 scope 모두 를 가질 FocusManager.FocusedElement수 있습니다.

다음 시나리오에서는 가 인 및 이 있는 WPF 애플리케이션에서 키보드 포커스 및 Menu 논리적 포커스가 MenuItemWindowTextBox 어떻게 변경되는지 보여 줍니다. 키보드 포커스가 TextBoxMenuItem에서 로 변경되면 키보드 포커스가 TextBox 손실되지만 포커스 scope 논리적 포커스가 Window 유지됩니다. 는 MenuItem 키보드 포커스를 가져오고 포커스 scope 대한 논리적 포커스를 Menu 얻습니다. 키보드 포커스가 루트Window로 돌아오면 논리 포커스가 있는 Window 포커스 scope 요소는 키보드 포커스를 얻습니다. 이 경우 입니다TextBox. TextBox 이제 에는 키보드 포커스와 논리적 포커스가 있습니다. 는 MenuItem 키보드 포커스를 잃지만 포커스 scope 논리적 포커스를 Menu 유지합니다.

, , MenuToolBarContextMenuIsFocusScopeWindow기본값은 입니다true.

포커스에 대한 자세한 내용은 입력 개요포커스 개요를 참조하세요.

필드

FocusedElementProperty

FocusedElement 연결된 속성을 식별합니다.

GotFocusEvent

GotFocus 연결된 이벤트를 식별합니다.

IsFocusScopeProperty

IsFocusScope 연결된 속성을 식별합니다.

LostFocusEvent

LostFocus 연결된 이벤트를 식별합니다.

연결된 속성

FocusedElement

이 속성이 연결된 요소에 논리적 포커스가 있는지 여부를 확인합니다.

IsFocusScope

이 속성이 연결된 요소가 포커스 범위인지 여부를 확인합니다.

메서드

AddGotFocusHandler(DependencyObject, RoutedEventHandler)

GotFocus 연결된 이벤트에 대한 처리기를 추가합니다.

AddLostFocusHandler(DependencyObject, RoutedEventHandler)

LostFocus 연결된 이벤트에 대한 처리기를 추가합니다.

GetFocusedElement(DependencyObject)

지정된 포커스 범위 내에서 논리적 포커스가 있는 요소를 가져옵니다.

GetFocusScope(DependencyObject)

IsFocusScopetrue로 설정된 지정된 요소의 가장 가까운 상위 요소를 확인합니다.

GetIsFocusScope(DependencyObject)

지정된 DependencyObject가 포커스 범위인지 여부를 확인합니다.

RemoveGotFocusHandler(DependencyObject, RoutedEventHandler)

GotFocus 연결된 이벤트에 대한 처리기를 제거합니다.

RemoveLostFocusHandler(DependencyObject, RoutedEventHandler)

LostFocus 연결된 이벤트에 대한 처리기를 제거합니다.

SetFocusedElement(DependencyObject, IInputElement)

지정된 요소에 논리적 포커스를 설정합니다.

SetIsFocusScope(DependencyObject, Boolean)

지정된 DependencyObject를 포커스 범위로 설정합니다.

연결된 이벤트

GotFocus

요소가 포커스를 받을 때 발생합니다.

LostFocus

요소가 포커스를 잃을 때 발생합니다.

적용 대상