EventManager.RegisterClassHandler Метод

Определение

Регистрирует обработчик класса для определенного маршрутизируемого события.

Перегрузки

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

Ссылка на реализацию обработчика класса.

Примеры

В следующем примере добавляется обработчик для PreviewMouseLeftButtonDownвызова 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 в статических конструкторах. Эти методы обработки классов обычно существуют для входных событий и имеют имена, начинающиеся с "Вкл." и заканчивающиеся именем обрабатываемого класса события.

Дополнительные сведения об обработке классов см. в разделе "Маркировка перенаправленных событий как обработанные" и "Обработка классов".

С помощью этой сигнатуры обработчики классов будут зарегистрированы для вызова только в ответ на необработанных событий. Можно также зарегистрировать обработчики классов для вызова, даже если аргументы события помечены как обрабатываемые с помощью сигнатуры 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 в статических конструкторах. Эти методы обработки классов обычно существуют для входных событий и имеют имена, начинающиеся с "Вкл." и заканчивающиеся именем обрабатываемого класса события.

Дополнительные сведения об обработке классов см. в разделе "Маркировка перенаправленных событий как обработанные" и "Обработка классов".

С помощью этой сигнатуры обработчики классов можно зарегистрировать для вызова обработанных событий, задав для этого параметра handledEventsToo значение true. Как правило, это следует сделать только в том случае, если возникает известная проблема, связанная с обработкой, например обработка входных систем с помощью мыши или событий клавиатуры.

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