RoutedEventArgs.OriginalSource 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이벤트를 발생시킨 개체에 대한 참조를 가져옵니다. 앱 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
속성 값
이벤트를 발생시킨 개체입니다.
설명
라우트된 이벤트가 이벤트 경로를 sender
버블 업하는 경우 는 더 이상 이벤트 발생 개체와 동일한 개체가 아닙니다. 대신 sender
은 호출되는 처리기가 연결된 개체입니다.
경우에 따라 sender
은 흥미롭지 않으며 포인터 이벤트가 발생했을 때 포인터가 끝난 가능한 자식 개체 또는 사용자가 키보드 키를 누를 때 더 큰 UI에서 포커스를 잡은 개체와 같은 정보에 관심이 있습니다. 이러한 경우 속성의 OriginalSource
값을 사용할 수 있습니다. 경로 OriginalSource
의 모든 지점에서 처리기가 연결된 개체 대신 이벤트를 발생시킨 원래 개체를 보고합니다. 그러나 UIElement 입력 이벤트의 경우 원래 개체는 종종 페이지 수준 UI 정의 XAML에서 즉시 표시되지 않는 개체입니다. 대신 이 원본 개체는 컨트롤의 템플릿 기반 부분일 수 있습니다. 예를 들어 사용자가 단추의 가장자리 위에 포인터를 가져가면 대부분의 포인터 이벤트에 대해 는 OriginalSource
단추 자체가 아니라 템플릿의 테두리 템플릿 부분입니다. 따라서 XAML 페이지 수준 UI 정의에서 OriginalSource
특별히 선언한 개체를 나타내는 데 항상 의존할 수는 없습니다.
팁
입력 이벤트 버블링은 템플릿 컨트롤을 만드는 경우에 특히 유용합니다. 템플릿이 있는 컨트롤에는 소비자가 적용한 새 템플릿이 있을 수 있습니다. 소비자는 작업 템플릿을 다시 만들려고 하다가 기본 템플릿에서 선언된 일부 이벤트 처리를 자신도 모르게 제거할 수 있습니다. 이 경우 클래스 정의에 있는 OnApplyTemplate 재정의의 일부로서 처리기를 연결하여 여전히 컨트롤 수준의 이벤트 처리를 제공할 수 있습니다. 그런 다음 인스턴스화에서 컨트롤의 루트까지 버블링된 입력 이벤트를 catch할 수 있습니다.