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