RoutedEventArgs.OriginalSource 속성

정의

이벤트를 발생시킨 개체에 대한 참조를 가져옵니다. 앱 UI에서 선언된 요소가 아닌 컨트롤의 템플릿 부분입니다.

public:
 property Platform::Object ^ OriginalSource { Platform::Object ^ get(); };
IInspectable OriginalSource();
public object OriginalSource { get; }
var object = routedEventArgs.originalSource;
Public ReadOnly Property OriginalSource As Object

속성 값

Object

Platform::Object

IInspectable

이벤트를 발생시킨 개체입니다.

설명

라우트된 이벤트가 이벤트 경로를 버블 업하면 발신자 는 더 이상 이벤트 발생 개체와 동일한 개체가 아닙니다. sender는 호출될 처리기가 있는 개체입니다.

경우에 따라 sender가 관심 대상이 아니고, 포인터 이벤트 발생 시 가능한 자식 개체 중 포인터가 가리키는 개체 또는 키보드 키를 눌렀을 때 포커스를 받는 더 큰 UI의 개체 등과 같은 정보에 관심이 있을 수 있습니다. 이런 경우, OriginalSource 속성 값을 사용할 수 있습니다. 경로의 모든 지점에서 OriginalSource는 처리기가 연결된 개체 대신 이벤트를 발생시킨 원래 개체를 보고합니다. 그러나 UIElement 입력 이벤트의 경우 원래 개체는 종종 페이지 수준 UI 정의 XAML에서 즉시 표시되지 않는 개체입니다. 대신 이 원본 개체는 컨트롤의 템플릿 기반 부분일 수 있습니다. 예를 들어 사용자가 단추의 가장자리 위에 포인터를 가져가면 대부분의 포인터 이벤트에 대해 OriginalSource는 단추 자체가 아니라 템플릿테두리 템플릿 부분입니다. 따라서 XAML 페이지 수준 UI 정의에서 특별히 선언한 개체를 나타내는 OriginalSource를 항상 사용할 수는 없습니다.

입력 이벤트 버블링은 템플릿 컨트롤을 만드는 경우에 특히 유용합니다. 템플릿이 있는 컨트롤에는 소비자가 적용한 새 템플릿이 있을 수 있습니다. 소비자는 작업 템플릿을 다시 만들려고 하다가 기본 템플릿에서 선언된 일부 이벤트 처리를 자신도 모르게 제거할 수 있습니다. 이 경우 클래스 정의에 있는 OnApplyTemplate 재정의의 일부로서 처리기를 연결하여 여전히 컨트롤 수준의 이벤트 처리를 제공할 수 있습니다. 그런 다음 인스턴스화에서 컨트롤의 루트까지 버블링된 입력 이벤트를 catch할 수 있습니다.

적용 대상

추가 정보