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 中所能看到的物件。 該原始來源物件可能是控制項的範本組件。 例如,如果使用者將指標停留在Button的邊緣上,大部分的指標事件 OriginalSource
都是Template中的Border範本元件,而不是Button本身。 因此,您無法一律依賴 OriginalSource
代表您在 XAML 頁面層級 UI 定義中特別宣告的物件。
提示
如果您要建立樣板化控制項,輸入事件反升特別有用。 控制項的取用者可以為含有範本的任一控制項套用新範本。 正嘗試重建工作範本的取用者,可能會不慎刪除在預設範本中宣告的某些事件處理。 您仍然可以提供控制項層級的事件處理,方法是將處理常式附加為類別定義中的 OnApplyTemplate 覆寫的一部分。 接著,您可以攔截具現化時向上反昇至控制項根目錄的輸入事件。