EventManager.RegisterClassHandler 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
为特定路由事件注册类处理程序。
重载
RegisterClassHandler(Type, RoutedEvent, Delegate) |
为特定路由事件注册类处理程序。 |
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) |
使用处理事件数据已标记为已处理的事件的选项,为特定路由事件注册类处理程序。 |
RegisterClassHandler(Type, RoutedEvent, Delegate)
为特定路由事件注册类处理程序。
public:
static void RegisterClassHandler(Type ^ classType, System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler);
public static void RegisterClassHandler (Type classType, System.Windows.RoutedEvent routedEvent, Delegate handler);
static member RegisterClassHandler : Type * System.Windows.RoutedEvent * Delegate -> unit
Public Shared Sub RegisterClassHandler (classType As Type, routedEvent As RoutedEvent, handler As Delegate)
参数
- classType
- Type
声明类处理的类的类型。
- routedEvent
- RoutedEvent
要处理的事件的路由事件标识符。
- handler
- Delegate
对类处理程序实现的引用。
示例
下面的示例为 PreviewMouseRightButtonDownEvent添加了一个处理程序,调用 RegisterClassHandler。
static MyEditContainer()
{
EventManager.RegisterClassHandler(typeof(MyEditContainer), PreviewMouseRightButtonDownEvent, new RoutedEventHandler(LocalOnMouseRightButtonDown));
}
internal static void LocalOnMouseRightButtonDown(object sender, RoutedEventArgs e)
{
MessageBox.Show("this is invoked before the On* class handler on UIElement");
//e.Handled = true; //uncommenting this would cause ONLY the subclass' class handler to respond
}
Shared Sub New()
EventManager.RegisterClassHandler(GetType(MyEditContainer), PreviewMouseRightButtonDownEvent, New RoutedEventHandler(AddressOf LocalOnMouseRightButtonDown))
End Sub
Friend Shared Sub LocalOnMouseRightButtonDown(ByVal sender As Object, ByVal e As RoutedEventArgs)
MessageBox.Show("this is invoked before the On* class handler on UIElement")
'e.Handled = True //uncommenting this would cause ONLY the subclass' class handler to respond
End Sub
注解
类处理是可用于路由事件的功能,包括通过路由事件支持实现的附加事件。 类处理程序类似于类的所有实例存在的静态处理程序。 由于处理程序是静态的,因此不能直接使用类处理程序更改实例属性,但可以通过 参数和/或事件数据访问实例 sender
。
类处理程序在实例处理程序之前调用。 可以实现一个类处理程序,该处理程序具有将事件标记为已处理的行为。 因此,除非实例处理程序专门为已处理的事件注册,否则不会调用类处理事件的实例处理程序。
许多 WPF 基元素事件提供类处理虚拟方法。 通过在继承基类的类中重写这些方法,可以实现类处理,而无需在静态构造函数中调用 RegisterClassHandler 。 这些类处理方法通常适用于输入事件,其名称以“On”开头,以正在类处理的事件的名称结尾。
有关类处理的详细信息,请参阅 将路由事件标记为已处理和类处理。
使用此签名时,类处理程序将注册为仅调用以响应未经处理的事件。 还可以注册类处理程序以调用,即使事件参数被标记为已处理,使用 RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) 签名将 handledEventsToo
设置为 true
。
适用于
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)
使用处理事件数据已标记为已处理的事件的选项,为特定路由事件注册类处理程序。
public:
static void RegisterClassHandler(Type ^ classType, System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler, bool handledEventsToo);
public static void RegisterClassHandler (Type classType, System.Windows.RoutedEvent routedEvent, Delegate handler, bool handledEventsToo);
static member RegisterClassHandler : Type * System.Windows.RoutedEvent * Delegate * bool -> unit
Public Shared Sub RegisterClassHandler (classType As Type, routedEvent As RoutedEvent, handler As Delegate, handledEventsToo As Boolean)
参数
- classType
- Type
声明类处理的类的类型。
- routedEvent
- RoutedEvent
要处理的事件的路由事件标识符。
- handler
- Delegate
对类处理程序实现的引用。
- handledEventsToo
- Boolean
如果即使已将路由事件的参数标记为已处理时也调用此类处理程序,则为 true
;如果保留不对任何标记为已处理的事件调用处理程序的默认行为,则为 false
。
注解
类处理是可用于路由事件的功能,包括通过路由事件支持实现的附加事件。 类处理程序类似于类的所有实例存在的静态处理程序。 由于处理程序是静态的,因此不能直接使用类处理程序更改实例属性,但可以通过 参数和/或事件数据访问实例 sender
。
类处理程序在实例处理程序之前调用。 可以实现一个类处理程序,该处理程序具有将事件标记为已处理的行为。 因此,除非实例处理程序专门为已处理的事件注册,否则不会调用类处理事件的实例处理程序。
许多 WPF 基元素事件提供类处理虚拟方法。 通过在继承基类的类中重写这些方法,可以实现类处理,而无需在静态构造函数中调用 RegisterClassHandler 。 这些类处理方法通常适用于输入事件,其名称以“On”开头,以正在类处理的事件的名称结尾。
有关类处理的详细信息,请参阅 将路由事件标记为已处理和类处理。
使用此签名,可以通过将 handledEventsToo
设置为 true
来注册类处理程序,以在处理的事件时调用 。 通常,仅当尝试解决的已知处理问题(例如鼠标或键盘事件的输入系统处理)时,才应执行此操作。