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

提示

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

適用於

另請參閱