EventManager.RegisterClassHandler EventManager.RegisterClassHandler EventManager.RegisterClassHandler Method

Определение

Регистрирует обработчик класса для определенного маршрутизируемого события.Registers a class handler for a particular routed event.

Перегрузки

RegisterClassHandler(Type, RoutedEvent, Delegate) RegisterClassHandler(Type, RoutedEvent, Delegate) RegisterClassHandler(Type, RoutedEvent, Delegate)

Регистрирует обработчик класса для определенного маршрутизируемого события.Registers a class handler for a particular routed event.

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Регистрирует обработчик класса для определенного маршрутизируемого события с возможностью обработки событий, данные событий в которых уже отмечены как обработанные.Registers a class handler for a particular routed event, with the option to handle events where event data is already marked handled.

RegisterClassHandler(Type, RoutedEvent, Delegate) RegisterClassHandler(Type, RoutedEvent, Delegate) RegisterClassHandler(Type, RoutedEvent, Delegate)

Регистрирует обработчик класса для определенного маршрутизируемого события.Registers a class handler for a particular routed event.

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

Параметры

classType
Type Type Type

Тип класса, объявляющего обработку класса.The type of the class that is declaring class handling.

routedEvent
RoutedEvent RoutedEvent RoutedEvent

Идентификатор маршрутизируемого события для обработки.The routed event identifier of the event to handle.

handler
Delegate Delegate Delegate

Ссылка на реализацию обработчика класса.A reference to the class handler implementation.

Примеры

В следующем примере добавляется обработчик для PreviewMouseLeftButtonDownвызова метода RegisterClassHandler.The following example adds a handler for PreviewMouseLeftButtonDown, calling 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

Комментарии

Обработка классов — это функция, доступная для перенаправленных событий, включая вложенные события, реализованные с помощью резервного копирования перенаправленных событий.Class handling is a feature that is available for routed events, including attached events that are implemented with routed event backing. Обработчик класса похож на статический обработчик, который существует для всех экземпляров класса.A class handler is like a static handler that exists for all instances of the class. Поскольку обработчик является статическим, вы не можете изменять свойства экземпляра непосредственно с помощью обработчика класса, но вы можете получить доступ sender к экземплярам через параметр и (или) данные события.Because the handler is static, you cannot change instance properties directly with a class handler, but you can access instances through the sender parameter and/or the event data.

Обработчики классов вызываются до обработчиков экземпляров.Class handlers are invoked before instance handlers. Можно реализовать обработчик класса, который имеет поведение пометки события как обработанного.You can implement a class handler that has the behavior of marking the event as handled. Поэтому обработчики экземпляров для события, обрабатываемого классом, не вызываются, если только обработчики экземпляров не регистрируются специально для обработанных событий.Therefore, instance handlers for a class-handled event are not invoked unless the instance handlers register specifically for handled events.

Многие события базового элемента предоставляют виртуальные методы обработки классов. WPFWPFMany of the WPFWPF base element events provide class handling virtual methods. Переопределяя эти методы в классах, которые наследуют базовые классы, можно реализовать обработку классов без вызова RegisterClassHandler в статических конструкторах.By overriding these methods in classes that inherit the base classes, you can implement class handling without calling RegisterClassHandler in static constructors. Эти методы обработки класса обычно существуют для входных событий и имеют имена, начинающиеся с "on" и заканчивающиеся именем события, обрабатываемого классом.These class handling methods typically exist for input events and have names that start with "On" and end with the name of the event being class handled.

Дополнительные сведения об обработке классов см. в разделе Маркировка перенаправленных событий как обработанных и обработка классов.For more information about class handling, see Marking Routed Events as Handled, and Class Handling.

С помощью этой сигнатуры обработчики классов будут зарегистрированы для вызова только в ответ на необработанные события.Using this signature, class handlers will be registered to invoke only in response to unhandled events. Можно также зарегистрировать обработчики классов для вызова, даже если аргументы события помечены как обработанные с помощью RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) сигнатуры с handledEventsToo trueпараметром.You can also register class handlers to invoke even if the event arguments are marked handled, by using the RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) signature, with handledEventsToo set to true.

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Регистрирует обработчик класса для определенного маршрутизируемого события с возможностью обработки событий, данные событий в которых уже отмечены как обработанные.Registers a class handler for a particular routed event, with the option to handle events where event data is already marked handled.

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

Параметры

classType
Type Type Type

Тип класса, объявляющего обработку класса.The type of the class that is declaring class handling.

routedEvent
RoutedEvent RoutedEvent RoutedEvent

Идентификатор маршрутизируемого события для обработки.The routed event identifier of the event to handle.

handler
Delegate Delegate Delegate

Ссылка на реализацию обработчика класса.A reference to the class handler implementation.

handledEventsToo
Boolean Boolean Boolean

Значение true для вызова данного обработчика класса даже если аргументы маршрутизируемого события отмечены как обработанные; значение false для сохранения метода действия по умолчанию (обработчик не будет вызываться для событий, отмеченных как обработанные).true to invoke this class handler even if arguments of the routed event have been marked as handled; false to retain the default behavior of not invoking the handler on any marked-handled event.

Комментарии

Обработка классов — это функция, доступная для перенаправленных событий, включая вложенные события, реализованные с помощью резервного копирования перенаправленных событий.Class handling is a feature that is available for routed events, including attached events that are implemented with routed event backing. Обработчик класса похож на статический обработчик, который существует для всех экземпляров класса.A class handler is like a static handler that exists for all instances of the class. Поскольку обработчик является статическим, вы не можете изменять свойства экземпляра непосредственно с помощью обработчика класса, но вы можете получить доступ sender к экземплярам через параметр и (или) данные события.Because the handler is static, you cannot change instance properties directly with a class handler, but you can access instances through the sender parameter and/or the event data.

Обработчики классов вызываются до обработчиков экземпляров.Class handlers are invoked before instance handlers. Можно реализовать обработчик класса, который имеет поведение пометки события как обработанного.You can implement a class handler that has the behavior of marking the event as handled. Поэтому обработчики экземпляров для события, обрабатываемого классом, не вызываются, если только обработчики экземпляров не регистрируются специально для обработанных событий.Therefore, instance handlers for a class-handled event are not invoked unless the instance handlers register specifically for handled events.

Многие события базового элемента предоставляют виртуальные методы обработки классов. WPFWPFMany of the WPFWPF base element events provide class handling virtual methods. Переопределяя эти методы в классах, которые наследуют базовые классы, можно реализовать обработку классов без вызова RegisterClassHandler в статических конструкторах.By overriding these methods in classes that inherit the base classes, you can implement class handling without calling RegisterClassHandler in static constructors. Эти методы обработки класса обычно существуют для входных событий и имеют имена, начинающиеся с "on" и заканчивающиеся именем события, обрабатываемого классом.These class handling methods typically exist for input events and have names that start with "On" and end with the name of the event being class handled.

Дополнительные сведения об обработке классов см. в разделе Маркировка перенаправленных событий как обработанных и обработка классов.For more information about class handling, see Marking Routed Events as Handled, and Class Handling.

С помощью этой сигнатуры обработчики классов могут быть зарегистрированы для вызова при обработке событий handledEventsToo , установив trueдля параметра значение.Using this signature, class handlers can be registered to invoke upon handled events, by setting handledEventsToo set to true. Как правило, это следует делать только в том случае, если существует известная проблема обработки, например обработка входных данных из событий мыши или клавиатуры.Generally, you should do this only if there is a known handling issue you are trying to work around, such as input system handling from mouse or keyboard events.

Применяется к