EventManager.RegisterClassHandler Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Regista um gestor de classes para um determinado evento encaminhado.
Sobrecargas
| Name | Description |
|---|---|
| RegisterClassHandler(Type, RoutedEvent, Delegate) |
Regista um gestor de classes para um determinado evento encaminhado. |
| RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) |
Regista um gestor de classe para um determinado evento encaminhado, com a opção de tratar eventos onde os dados do evento já estão marcados como tratados. |
RegisterClassHandler(Type, RoutedEvent, Delegate)
Regista um gestor de classes para um determinado evento encaminhado.
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)
Parâmetros
- classType
- Type
O tipo da classe que declara a gestão da classe.
- routedEvent
- RoutedEvent
O identificador de evento encaminhado do evento a tratar.
- handler
- Delegate
Uma referência à implementação do gestor de classes.
Exemplos
O exemplo seguinte adiciona um handler para PreviewMouseRightButtonDownEvent, chamando 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
Observações
A gestão de classes é uma funcionalidade disponível para eventos encaminhados, incluindo eventos anexos que são implementados com suporte de eventos encaminhados. Um gestor de classes é como um manipulador estático que existe para todas as instâncias da classe. Como o handler é estático, não podes alterar diretamente as propriedades das instâncias com um handler de classes, mas podes aceder às instâncias através do sender parâmetro e/ou dos dados do evento.
Os gestores de classe são invocados antes dos gestores de instância. Podes implementar um gestor de classes que tenha o comportamento de marcar o evento como tratado. Portanto, os handlers de instância para um evento de classe handled não são invocados a menos que os handlers de instância se registrem especificamente para eventos handled.
Muitos dos eventos de elemento base do WPF fornecem métodos virtuais de gestão de classes. Ao sobrescrever estes métodos em classes que herdam as classes base, pode implementar o tratamento de classes sem chamar RegisterClassHandler construtores estáticos. Estes métodos de gestão de classes existem tipicamente para eventos de entrada e têm nomes que começam por "On" e terminam com o nome do evento que está a ser tratado.
Para mais informações sobre o tratamento de classes, veja Marcar Eventos Encaminhados como Tratados e Tratamento de Classes.
Usando esta assinatura, os gestores de classes serão registados para invocação apenas em resposta a eventos não tratados. Também pode registar gestores de classes para invocar mesmo que os argumentos do evento estejam marcados como tratados, usando a RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) assinatura, com handledEventsToo definido como true.
Aplica-se a
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)
Regista um gestor de classe para um determinado evento encaminhado, com a opção de tratar eventos onde os dados do evento já estão marcados como tratados.
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)
Parâmetros
- classType
- Type
O tipo da classe que declara a gestão da classe.
- routedEvent
- RoutedEvent
O identificador de evento encaminhado do evento a tratar.
- handler
- Delegate
Uma referência à implementação do gestor de classes.
- handledEventsToo
- Boolean
true invocar este gestor de classes mesmo que os argumentos do evento encaminhado tenham sido marcados como tratados; false para manter o comportamento padrão de não invocar o handler em qualquer evento marcado.
Observações
A gestão de classes é uma funcionalidade disponível para eventos encaminhados, incluindo eventos anexos que são implementados com suporte de eventos encaminhados. Um gestor de classes é como um manipulador estático que existe para todas as instâncias da classe. Como o handler é estático, não podes alterar diretamente as propriedades das instâncias com um handler de classes, mas podes aceder às instâncias através do sender parâmetro e/ou dos dados do evento.
Os gestores de classe são invocados antes dos gestores de instância. Podes implementar um gestor de classes que tenha o comportamento de marcar o evento como tratado. Portanto, os handlers de instância para um evento de classe handled não são invocados a menos que os handlers de instância se registrem especificamente para eventos handled.
Muitos dos eventos de elemento base do WPF fornecem métodos virtuais de gestão de classes. Ao sobrescrever estes métodos em classes que herdam as classes base, pode implementar o tratamento de classes sem chamar RegisterClassHandler construtores estáticos. Estes métodos de gestão de classes existem tipicamente para eventos de entrada e têm nomes que começam por "On" e terminam com o nome do evento que está a ser tratado.
Para mais informações sobre o tratamento de classes, veja Marcar Eventos Encaminhados como Tratados e Tratamento de Classes.
Usando esta assinatura, os gestores de classes podem ser registados para invocar eventos tratados, definindo handledEventsToo o set para true. Geralmente, só deves fazer isto se houver um problema conhecido de manuseamento que estejas a tentar contornar, como a manipulação do sistema de entrada a partir de eventos de rato ou teclado.