다음을 통해 공유


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 은 호출되는 처리기가 연결된 개체입니다.

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

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

적용 대상

추가 정보