정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

UIElement.GotFocus 이벤트

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

네임스페이스:  System.Windows
어셈블리:  System.Windows(System.Windows.dll)

public event RoutedEventHandler GotFocus
<uiElement GotFocus="eventhandler"/>

GotFocus 이벤트는 버블링 이벤트입니다. 이는 개체 트리에서 부모/자식 관계로 연결된 일련의 개체에 대해 여러 개의 GotFocus 이벤트 처리기가 등록되어 있을 경우 관계에 포함된 각 개체에서 이벤트를 수신함을 의미합니다. 이 이벤트는 이벤트를 시작하는 입력 조건을 직접 수신하는 개체에 의해 발생한 다음 연속된 각 부모 개체로 버블링됩니다. 버블링이란 이벤트가 입력 조건을 직접 받는 개체에서 시작하여 위로 올라가면서 작동함을 나타내는 비유입니다. 버블링 이벤트의 경우 이벤트 처리기에서 사용할 수 있는 sender에 의해 이벤트가 처리되는 개체가 식별되며, 이 개체는 이벤트를 시작하는 입력 조건을 실제로 수신하는 개체가 아닐 수도 있습니다. 이벤트를 시작한 개체를 가져오려면 이벤트의 RoutedEventArgs 이벤트 데이터에서 OriginalSource 값을 사용합니다.

GotFocus 또는 LostFocus 이벤트를 처리할 경우 이벤트 데이터 클래스에서 Handled 속성을 사용할 수 없으며, 이벤트가 개체 트리 위쪽으로 이동하며 모든 처리기를 호출합니다. 개체 트리의 다양한 수준에서 포커스를 처리하려는 경우에는 이와 같은 방법이 응용 프로그램의 포커스 이벤트 처리 방법으로 적합하지 않을 수도 있습니다. 그런 경우 다음 방법 중 한 가지를 고려해 볼 수 있습니다.

  • 부울 플래그를 사용하여 포커스 상태를 기록합니다. 이벤트를 적절히 처리하는 디자인의 특정 처리기 호출에서 "Handled" 변수를 true로 설정합니다. 추가 처리기에서 이 "Handled" 변수를 확인하여 다른 처리기가 이미 이벤트에 응답했는지 확인하고 응답한 경우 아무런 작업도 수행하지 않습니다. 개체 트리의 루트에서 포커스 이벤트를 처리합니다. 이때 이벤트의 "Handled"를 다시 false로 설정하여 다음 포커스 이벤트를 위해 상태를 다시 설정합니다.

  • 이벤트 데이터의 senderOriginalSource에 의해 처리기에 전달되는 개체 값을 확인하거나 사용합니다. senderOriginalSource와 같거나 sender가 명명된 특정 개체일 때(동일한 포커스 이벤트 처리기가 여러 개체 또는 비슷한 논리 작업에 연결된 경우)에만 동작하도록 선택할 수 있습니다.

어떤 경우든지 개체의 구성된 트리에서 포커스의 현재 위치를 알면 전체 컨트롤에 적절한 시각적 상태를 설정하는 데 매우 유용합니다. 일반적으로 포커스 이벤트의 추가 이동을 제한하려는 경우에는 신중을 기해야 합니다.

이미 포커스가 있는 개체에 대해 Focus가 호출되면 GotFocus가 발생하지 않습니다.

GotFocus 는 실제 포커스 이동에 대해 비동기적으로 발생하는데 이는 Silverlight 포커스 시스템의 디자인 때문입니다. 동기적 포커스 값을 가져오려면 FocusManager를 사용합니다.

참고참고:

UI 관점에서 하나의 포커스 이벤트처럼 보이는 이벤트에 대해 GotFocus가 두 번 발생하는 경우가 있습니다. 포커스가 아직 Silverlight 콘텐츠 영역에 없는데 사용자가 클릭하거나 탭 키를 눌러 콘텐츠 영역 내의 특정 컨트롤로 이동하면 이런 경우가 발생할 수 있습니다. 이 경우 특정 컨트롤에서 대개 GotFocus를 발생시키며 자신을 OriginalSource로 보고합니다. 전체 콘텐츠 영역에 초기 포커스가 있을 때에도 GotFocus가 발생하며, 포커스 가능한 개체를 찾아서 해당 이벤트의 OriginalSource로 보고할 때까지 개체 트리로 이동합니다. 의도적으로 버블링 동작을 사용하는 동안 GotFocus를 처리하는 경우 이 동작이 문제가 될 수 있습니다. 처리기에서 이러한 경우를 식별하는 데 도움이 되는 OriginalSource를 확인합니다.

GotFocus 및 OnGotFocus

GotFocus 을 상속하는 컨트롤은 OnGotFocus 메서드를 재정의하여 모든 인스턴스에 대한 처리기 역할을 하는 이벤트 처리를 제공할 수 있습니다. 이벤트를 직접 처리할 때와 마찬가지로 Handled 속성을 사용할 수 없기 때문에 Handled를 통해 이벤트가 발생하지 않도록 하는 방식으로 OnGotFocus를 구현할 수 없습니다. 그러나 OnGotFocus는 시각적 상태를 설정할 때나 공용 또는 내부 상태 속성에 유용하게 사용할 수 있습니다. 예를 들어 ComboBox는 포커스 기반의 사용자 입력에 따라 선택된 항목을 설정할 수 있도록 OnGotFocus를 구현합니다. 자세한 내용은 OnGotFocus을 참조하십시오.

Silverlight

5, 4, 3에서 지원

Windows Phone용 Silverlight

Windows Phone OS 7.1, Windows Phone OS 7.0에서 지원

Silverlight에서 지원되는 운영 체제 및 브라우저에 대한 자세한 내용은 지원되는 운영 체제 및 브라우저을 참조하십시오.

커뮤니티 추가 항목

표시:
© 2014 Microsoft