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 中所能看到的物件。 該原始來源物件可能是控制項的範本組件。 例如,如果使用者將滑鼠指標停留在 Button 的邊緣,對於大多數的指標事件來說,OriginalSource 是 Template 中的 Border 範本組件,而非 Button 本身。 因此,您無法一律依賴 OriginalSource 來代表您在 XAML 頁面層級 UI 定義中特別宣告的物件。

提示

如果您要建立樣板化控制項,輸入事件反升特別有用。 控制項的取用者可以為含有範本的任一控制項套用新範本。 正嘗試重建工作範本的取用者,可能會不慎刪除在預設範本中宣告的某些事件處理。 您仍然可以提供控制項層級的事件處理,方法是將處理常式附加為類別定義中的 OnApplyTemplate 覆寫的一部分。 接著,您可以攔截具現化時向上反昇至控制項根目錄的輸入事件。

適用於

另請參閱