PointerExited 이벤트
TOC
콘텐츠의 테이블 축소
콘텐츠의 테이블 확장

UIElement.PointerExited Event

포인터가 이 요소의 적중 테스트 영역을 벗어나면 발생합니다.

구문


public event PointerEventHandler PointerExited


<uiElement PointerExited="eventhandler"/>

이벤트 정보

대리자 PointerEventHandler

설명

PointerExited 이벤트는 원래 요소의 경계 영역 내에 있었던 포인터가 경계 영역을 벗어나는 데 대한 응답으로 발생합니다. Windows 스토어 앱에서 터치, 마우스 및 펜/스타일러스 상호 작용은 포인터 입력으로 수신, 처리 및 관리됩니다. 이러한 장치와 해당 상호 작용에 따라 PointerExited 이벤트가 생성될 수 있습니다. 자세한 내용은 빠른 시작: 포인터 및 이 항목의 기타 설명을 참조하십시오.

PointerEventHandler를 기반으로 처리기를 사용하여 이 이벤트를 처리합니다.

터치 작업의 경우와 터치 작업 결과로 발생하는 상호 작용별 또는 조작 이벤트의 경우, 이벤트 소스가 되도록 하려면 보이는 요소를 적중 테스트하고 작업과 연결된 이벤트를 발생시켜야 합니다. UIElement.VisibilityVisible이어야 합니다. 파생 형식의 다른 속성은 적중 테스트 표시 유형에도 영향을 줍니다. 자세한 내용은 적중 테스트 및 입력 이벤트를 참조하십시오.

PointerExited는 이벤트에 대한 이벤트 데이터가 Handled로 표시된 경우에도 이벤트 처리기를 호출 경로에 연결할 수 있도록 합니다. AddHandler를 참조하십시오.

특정 Windows 런타임 컨트롤에는 PointerExited 입력 이벤트에 대한 클래스 기반 처리가 있을 수 있습니다. 그렇다면 컨트롤에는 OnPointerExited 메서드에 대한 재정의가 있을 수 있습니다. 일반적으로 이벤트는 클래스 처리기에 의해 처리됨으로 표시되므로 PointerExited 이벤트는 UI의 컨트롤에 대한 사용자 코드에 의해 처리될 수 있습니다. 이벤트의 클래스 기반 처리가 작동하는 방법에 대한 자세한 내용은 컨트롤의 입력 이벤트 처리기를 참조하십시오.

다른 요소가 포인터를 캡처한 경우 캡처된 포인터가 요소의 경계 밖으로 나가더라도 PointerExited가 발생하지 않습니다. 포인터 캡처에 대한 자세한 내용은 CapturePointer 또는 마우스 조작에 응답을 참조하십시오.

마우스 및 펜/스타일러스 입력에 대한 PointerExited

마우스 입력 장치에는 마우스를 이동할 때마다 표시되는 화면 커서(마우스 단추를 누르는 경우에도 나타남)가 있습니다. 스타일러스가 입력 장치 화면을 가리키고 있지만(IsInRange) 화면을 터치하지 않고 있음을 입력 장치에서 감지할 수 있는 펜 장치 입력에도 이와 유사한 동작을 사용할 수 있습니다. 따라서 터치 이벤트와 약간 다른 경우에 마우스 및 펜 장치 입력이 PointerExited 이벤트를 발생시킵니다. 자세한 내용은 마우스 상호 작용에 응답을 참조하십시오. PointerExited 이벤트는 요소에 대한 마지막 PointerMoved 이벤트가 발생한 후에 발생합니다.

터치식 입력에 대한 PointerExited

터치 지점은 손가락이 표면에 닿는 경우에만 감지할 수 있습니다. 터치 작업으로 인해 PointerReleased 이벤트가 발생할 때마다 해당 이벤트 바로 뒤에 PointerExited 이벤트가 있고 두 이벤트에 대한 모든 이벤트 데이터가 같습니다(동일한 포인터 ID, 동일한 위치 등). 즉, 포인터는 해당 요소가 터치 지점에 접촉된 순간 및 위치에 요소를 입력하는 것으로 간주됩니다.

또는 터치 지점은 해당 포인터가 이동할 때 화면과 일정한 접촉을 유지하고 처음에 요소 위에 위치한 다음 요소의 적중 테스트 경계에서 나가는 경우 PointerExited를 생성합니다. 이러한 종류의 터치 동작에 대해 포인터 이벤트가 아닌 조작 또는 제스처로 동작을 처리할 수도 있습니다. 자세한 내용은 빠른 시작: 터치 입력을 참조하십시오.

PointerExited에 대해 라우팅된 이벤트 동작

PointerExited는 라우트된 이벤트입니다. 라우트된 이벤트 개념에 대한 자세한 내용은 이벤트 및 라우트된 이벤트 개요를 참조하십시오. 부모-자식 관계에 있는 요소를 포함하여 XAML UI에 있는 요소에 대해 여러 PointerExited 이벤트를 정의할 수 있습니다. 일반적인 UI 컴퍼지션에서 자식 요소는 부모 요소의 경계 내에 있으므로, 포인터를 자식 요소 바깥으로 이동하면 PointerExited 이벤트가 자식 요소에 대해 먼저 발생하고 여기에서 포인터를 부모 요소 바깥으로 완전히 이동하면 부모 요소에 대해 이벤트가 발생합니다. PointerExited 이벤트는 일반적으로 자식 요소가 해당 이벤트를 발생시킬 때 부모로 버블링되지 않습니다. PointerExited 이벤트 발생을 부모에 라우팅하면 입력 시스템에 혼동이 생길 수 있기 때문입니다. 일반적으로 PointerExited 이벤트를 라우팅하지 않고 보낸 사람의 이벤트만 처리하려고 합니다. 처리기에서 Handledtrue로 설정하여 이벤트 라우팅을 명시적으로 금지할 수 있습니다.

드물기는 하지만, 부모에 대한 PointerExited 이벤트 버블이 보일 수 있습니다. 예를 들어 RenderTransform을 사용하여 부모의 범위를 벗어나는 자식 요소의 위치를 오프셋하는 경우 자식 요소가 종료될 때 이벤트가 부모로 버블링되고 자식 요소의 이벤트 발생 방법에 대해 보고하는 이벤트 정보를 제공합니다.

컨트롤에 대한 PointerOver 시각적 상태

컨트롤 템플릿이 있는 컨트롤은 컨트롤의 범위 위에 포인터가 있을 경우에만 활성화되는 시각적 상태를 적용할 수 있습니다. 이 동작을 가져오거나 변경하기 위해 항상 PointerEntered 또는 PointerExited를 처리할 필요는 없습니다. 컨트롤의 템플릿을 다시 지정해야 합니다. 시각적 상태를 호출하는 하위 수준의 입력 처리가 이미 있는 기존 컨트롤에서 파생하는 경우 "CommonStates" VisualStateGroup의 "PointerOver"라는 시각적 상태를 제공해야 합니다. 그러면 기본 제공 컨트롤 논리에서 포인터가 컨트롤 위에 있을 때마다 해당 시각적 상태를 로드합니다. 포인터의 표시 상태는 주로 Button 또는 ListViewItem과 같이 호출하거나 선택할 수 있는 컨트롤에 있습니다. 시각적 상태를 호출하는 기본 제공 입력 이벤트 처리가 포함되지 않은 기본 클래스(예: Control)에서 파생하는 경우, 이 동작을 가져오려면 OnPointerEnteredOnPointerExited를 직접 재정의해야 합니다. "PointerOver" 상태가 아닌 상태(예: "Normal")를 로드하려면 OnPointerExited를 사용하여 GoToState를 호출합니다. 자세한 내용은 시각적 상태에 대한 스토리보드 애니메이션을 참조하십시오.

Windows 8 동작

Windows 8의 경우 화면 커서(스타일러스 또는 터치 지점)가 실제로 이동하지 않은 경우 일반적으로 PointerEntered 이벤트가 발생하지 않습니다. 예를 들어 마우스 및 해당 화면 커서가 고정되어 있고 PointerEntered 처리기가 있는 개체의 위치가 번역되었거나 화면 커서 아래로 이동하도록 조정된 경우 PointerEntered가 발생하지 않습니다. 또는 팝업 또는 플라이아웃과 같은 요소가 사라지고 이제 포인터가 새 요소 위에 있지만 아직은 이동하지 않은 경우 PointerEntered가 발생하지 않습니다. 이와 관련된 PointerExited 동작입니다. 예를 들어 팝업이 프로그래밍 방식으로 해제된 경우 포인터가 그것을 해제하는 원인으로 이동하지 않으면 PointerExited를 발생시키지 않습니다. 포인터가 새로 표시된 요소 위에 있는 동안 이동하지만 이러한 이동이 발생할지 여부는 사용자에 의해 결정되며 이는 해제 순간이 아닌 이동 시 발생하는 경우 계속 PointerEntered 이벤트가 발생합니다. 즉, 앱 UI에서의 포인터 상태 확인에 대해 PointerEntered를 발생시킨 마지막 요소를 사용하려는 작업은 Windows 8에서 광범위하지 않으며 PointerEnteredPointerExited가 쌍을 이루지 않는 경우가 많습니다. 이는 PointerEnteredPointerExited를 트리거로도 사용하는 컨트롤의 시각적 상태에 영향을 줍니다.

Windows 8.1부터는 포인터가 한 번만 PointerEntered 이벤트를 발생시킨 경우에 PointerExited가 발생하지만 포인터가 더 이상 해당 요소 내에 없는 경우 일부 UI 상태 변경이 발생합니다. 전체 요소가 사라지는 경우가 포함됩니다. 그리고 이제 포인터가 다른 요소 위에 있는 경우 이전 요소가 나타나지 않았으므로 포인터가 이동하지 않아도 이 요소가 PointerEntered를 발생시킵니다. 프로그래밍 방식으로 VisibilityCollapsed로 설정하는 요소의 경우 UI에서 사라지고, Windows 8.1 동작이 이에 대해 설명하고 Collapsed 요소에 대해 PointerExited를 발생시키고 새로 표시된 요소에 대해 PointerEntered를 발생시킵니다.

앱 코드를 Windows 8에서 Windows 8.1로 마이그레이션하는 경우 이 동작 변경으로 인해 PointerExitedPointerEntered가 이전에는 발생하지 않았던 경우에서 발생되기 때문에 해당 동작 변경에 대해 설명할 수 있습니다.

Windows 8에 대해 컴파일되었지만 Windows 8.1에서 실행하는 앱이 계속해서 Windows 8 동작을 사용합니다.

요구 사항

지원되는 최소 클라이언트

Windows 8

지원되는 최소 서버

Windows Server 2012

Namespace

Windows.UI.Xaml
Windows::UI::Xaml [C++]

Metadata

Windows.winmd

참고 항목

UIElement
PointerEntered
PointerReleased
빠른 시작: 터치 입력
적중 테스트 및 입력 이벤트
XAML 사용자 입력 이벤트 샘플

 

 

표시:
© 2018 Microsoft