UIElement.Holding 이벤트
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
처리되지 않은 보류 상호 작용이 이 요소의 적중 테스트 영역에서 발생할 때 발생합니다.
public:
virtual event HoldingEventHandler ^ Holding;
// Register
event_token Holding(HoldingEventHandler const& handler) const;
// Revoke with event_token
void Holding(event_token const* cookie) const;
// Revoke with event_revoker
UIElement::Holding_revoker Holding(auto_revoke_t, HoldingEventHandler const& handler) const;
public event HoldingEventHandler Holding;
function onHolding(eventArgs) { /* Your code */ }
uIElement.addEventListener("holding", onHolding);
uIElement.removeEventListener("holding", onHolding);
- or -
uIElement.onholding = onHolding;
Public Custom Event Holding As HoldingEventHandler
<uiElement Holding="eventhandler"/>
이벤트 유형
설명
터치는 홀딩 작업을 생성할 수 있지만 마우스 장치는 일반적으로 수행할 수 없습니다. 자세한 내용은 포인터 입력 처리를 참조하세요.
Tapped, DoubleTapped 및 RightTapped 이벤트는 터치 포인트가 제거된 후에만 발생합니다. 그러나 터치 포인트가 여전히 접촉하는 동안 초기 홀딩 이벤트가 발생합니다. 이 이벤트는 터치 포인트가 일정 기간 동안 거의 동일한 PointerPoint 위치에 유지되는 경우에 발생합니다. 시스템이 보류 작업으로 해석하는 정확한 타이밍은 시스템 설정을 통해 사용자가 조정할 수 있습니다.
보유는 정보 UI를 위한 것이지만 상황에 맞는 메뉴를 표시하는 것과 같은 상호 작용의 경우 RightTapped 를 대신 사용해야 합니다. 먼저 홀딩을 처리하여 메뉴가 표시될 힌트를 표시하지만 메뉴 자체를 표시하려면 RightTapped 처리기를 사용합니다. 앱 디자인에서 보류상호 작용을 사용하는 방법에 대한 자세한 내용은 사용자 지정 사용자 상호 작용에 대한 터치 조작 디자인 또는 UX 지침을 참조하세요.
이벤트 보유는 일반적으로 쌍으로 발생합니다. 작업이 일정 기간 동안 이동하지 않음을 기반으로 하는 보류 작업으로 처음 해석되면 Holding Fires가 발생하며 HoldingState 값은 HoldingRoutedEventArgs 이벤트 데이터에서 Started입니다. 보류 작업이 종료되면 다른 Holding 이벤트가 발생하며, 이번에는 HoldingState가 Completed 또는 Canceled로 표시됩니다.
보류 작업은 사용자가 보류 상태 중에 포인터를 이동하지 않고 작업을 시작한 포인터 지점을 해제하는 경우 HoldingState가 완료됨으로 끝납니다. 이 경우 RightTapped 는 두 번째 홀딩 이벤트 직후에 실행됩니다.
보류 작업은 사용자가 작업을 시작한 포인터를 이동하거나 작업 중에 요소의 적중 테스트 상태 변경하거나 다른 포인터를 캡처하는 것과 같은 일반적이지 않은 상황에서도 HoldingState를 Canceled로 끝냅니다. 보류 작업이 HoldingState가 취소됨으로 끝나면 RightTapped이 실행되지 않습니다.
Holding 이벤트는 제스처를 나타내는 반면 PointerPressed 이벤트는 하위 수준 입력 이벤트입니다. 보유 및 PointerPressed 이벤트는 단일 사용자 상호 작용의 결과로 발생할 수 있습니다. 컨트롤이 컨트롤 논리에서 포인터 이벤트를 이미 처리하고 있거나 조작을 처리하고 있더라도 홀딩이 실행되는 것을 방지하지는 않습니다.
Holding 이벤트는 잠재적으로 둘 이상의 포인터 지점의 결과입니다. 보류와 같은 상위 수준 제스처 이벤트의 경우 더 이상 개별 PointerId 값 또는 개별 좌표와 같은 PointerPoint 세부 정보에 즉시 액세스할 수 없습니다. 디바이스 유형(PointerDeviceType)에 액세스할 수 있으며 좌표의 경우 GetPosition을 호출할 수 있습니다. 이 좌표는 둘 이상의 포인터 지점에서 홀드 에 대한 좌표의 평균을 제공합니다.
보유는 라우트된 이벤트입니다. 또한 요소는 Holding 이벤트 원본이 되도록 IsHoldingEnabled 가 true 여야 합니다(true 는 기본값임). IsHoldingEnabled가 false인 이벤트 원본 자식 요소에서 이벤트가 부모에 버블링되는 경우 부모 요소에서 IsHoldingEnabled가 false인 경우에도 부모 요소에 대한 보류를 처리할 수 있습니다. 라우트된 이벤트 개념에 대한 자세한 내용은 이벤트 및 라우트된 이벤트 개요를 참조하세요.
터치 동작의 경우와 터치 동작의 결과인 조작 관련 또는 조작 이벤트의 경우에도 이벤트 원본이 되거나 터치 동작과 연관된 이벤트를 실행하려면 요소의 적중 횟수 테스트가 보여야 합니다. UIElement.Visibility 는 표시되어야 합니다. 파생 형식의 다른 속성도 적중 테스트 표시 유형에 영향을 미칩니다. 자세한 내용은 이벤트 및 라우트된 이벤트 개요를 참조하세요.
보유는 이벤트에 대한 이벤트 데이터가 처리됨으로 표시된 경우에도 호출될 경로에 이벤트 처리기를 연결하는 기능을 지원 합니다. AddHandler를 참조하세요.
특정 Windows 런타임 컨트롤에는 Holding 이벤트에 대한 클래스 기반 처리가 있을 수 있습니다. 이 경우 컨트롤에 OnHolding 메서드에 대한 재정의가 있는 것일 수 있습니다. 이벤트에 대한 클래스 기반 처리의 작동 방식에 대한 자세한 내용은 이벤트 및 라우트된 이벤트 개요를 참조하세요.
탭 및 홀딩은 상호 배타적입니다. 작업이 보류 작업으로 간주되는 시간 임계값을 통과하는 경우 탭 작업으로도 간주되지 않습니다.
요소가 기본값이 아닌 ManipulationMode 값을 통해 조작 이벤트를 지원하는 한, Holding이 처음에 발생할 때마다 ManipulationStarting 도 발생합니다. 포인터 지점이 홀딩을 감지할 수 있을 만큼 한 곳에 남아 있지만, 그 후 사용자가 해제하지 않고 보류 작업과 연결된 포인터 지점을 이동하면( HoldingState 가 Canceled인 다른 Holding 이벤트로 이어짐) ManipulationStarted 및 ManipulationDelta 와 같은 다른 조작 이벤트도 발생할 수 있습니다.
마우스 및 펜/스타일러스 입력을 위한 홀딩
마우스 입력은 마우스 단추를 누른 시간이나 개최되는 단추에 관계없이 기본적으로 보류 이벤트를 생성하지 않습니다. 그러나 마우스 장치와 일부 펜 디바이스는 마우스 오른쪽 단추 또는 해당하는 단추를 누르고 놓으면 RightTapped 을 실행할 수 있습니다.
참고
고유한 GestureRecognizer 를 사용하고 설정에서 HoldWithMouse 를 지정하는 경우 마우스 동작을 보류 작업으로 처리하는 방법이 있습니다.