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 中的边框模板部件,而不是 Button 本身。 因此,不能始终依赖于 OriginalSource
表示在 XAML 页面级 UI 定义中专门声明的对象。
提示
如果要创建模板化控件,输入事件浮升特别有用。 对于任何具有模板的控件,其客户都可能应用一个新模板。 尝试重新创建工作模板的客户可能会无意中清除默认模板中声明的某些事件处理功能。 你仍然可以通过在类定义中将处理程序附加为 OnApplyTemplate 替代的一部分来提供控件级事件处理功能。 然后,你可以捕获在实例化时向上浮升至控件根的输入事件。