EventManager.RegisterClassHandler Método

Definição

Registra um manipulador de classes para um evento roteado particular.Registers a class handler for a particular routed event.

Sobrecargas

RegisterClassHandler(Type, RoutedEvent, Delegate)

Registra um manipulador de classes para um evento roteado particular.Registers a class handler for a particular routed event.

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Registra um manipulador de classes para um evento roteado específico, com a opção de manipular eventos em que os dados do evento já estão marcados como manipulados.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)

Registra um manipulador de classes para um evento roteado particular.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

Parâmetros

classType
Type

O tipo da classe que está declarando a manipulação de classe.The type of the class that is declaring class handling.

routedEvent
RoutedEvent

O identificador de evento roteado do evento a ser manipulado.The routed event identifier of the event to handle.

handler
Delegate

Uma referência à implementação do manipulador de classe.A reference to the class handler implementation.

Exemplos

O exemplo a seguir adiciona um manipulador para PreviewMouseLeftButtonDown, chamando 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

Comentários

A manipulação de classes é um recurso que está disponível para eventos roteados, incluindo eventos anexados que são implementados com o suporte a eventos roteados.Class handling is a feature that is available for routed events, including attached events that are implemented with routed event backing. Um manipulador de classe é como um manipulador estático que existe para todas as instâncias da classe.A class handler is like a static handler that exists for all instances of the class. Como o manipulador é estático, não é possível alterar as propriedades de instância diretamente com um manipulador de classe, mas você pode acessar instâncias por meio do parâmetro sender e/ou dos dados do evento.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.

Manipuladores de classe são invocados antes de manipuladores de instância.Class handlers are invoked before instance handlers. Você pode implementar um manipulador de classe que tenha o comportamento de marcar o evento como manipulado.You can implement a class handler that has the behavior of marking the event as handled. Portanto, os manipuladores de instância para um evento de classe manipulado não são invocados, a menos que os manipuladores de instância se registrem especificamente para eventos manipulados.Therefore, instance handlers for a class-handled event are not invoked unless the instance handlers register specifically for handled events.

Muitos dos eventos do elemento base WPFWPF fornecem métodos virtuais de manipulação de classe.Many of the WPFWPF base element events provide class handling virtual methods. Ao substituir esses métodos em classes que herdam as classes base, você pode implementar a manipulação de classes sem chamar RegisterClassHandler em construtores estáticos.By overriding these methods in classes that inherit the base classes, you can implement class handling without calling RegisterClassHandler in static constructors. Esses métodos de manipulação de classe normalmente existem para eventos de entrada e têm nomes que começam com "on" e terminam com o nome do evento que está sendo manipulado pela classe.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.

Para obter mais informações sobre manipulação de classes, consulte marcação de eventos roteados como manipulados e manipulação de classes.For more information about class handling, see Marking Routed Events as Handled, and Class Handling.

Usando essa assinatura, os manipuladores de classe serão registrados para invocar somente em resposta a eventos sem tratamento.Using this signature, class handlers will be registered to invoke only in response to unhandled events. Você também pode registrar manipuladores de classe para invocar mesmo se os argumentos do evento forem marcados como manipulados, usando a assinatura RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean), com handledEventsToo definido como 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)

Registra um manipulador de classes para um evento roteado específico, com a opção de manipular eventos em que os dados do evento já estão marcados como manipulados.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

Parâmetros

classType
Type

O tipo da classe que está declarando a manipulação de classe.The type of the class that is declaring class handling.

routedEvent
RoutedEvent

O identificador de evento roteado do evento a ser manipulado.The routed event identifier of the event to handle.

handler
Delegate

Uma referência à implementação do manipulador de classe.A reference to the class handler implementation.

handledEventsToo
Boolean

true para invocar esse manipulador de classe, mesmo se os argumentos do evento roteado tiverem sido marcados como manipulados; false para reter o comportamento padrão de não invocar o manipulador em nenhum evento manipulado marcado.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.

Comentários

A manipulação de classes é um recurso que está disponível para eventos roteados, incluindo eventos anexados que são implementados com o suporte a eventos roteados.Class handling is a feature that is available for routed events, including attached events that are implemented with routed event backing. Um manipulador de classe é como um manipulador estático que existe para todas as instâncias da classe.A class handler is like a static handler that exists for all instances of the class. Como o manipulador é estático, não é possível alterar as propriedades de instância diretamente com um manipulador de classe, mas você pode acessar instâncias por meio do parâmetro sender e/ou dos dados do evento.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.

Manipuladores de classe são invocados antes de manipuladores de instância.Class handlers are invoked before instance handlers. Você pode implementar um manipulador de classe que tenha o comportamento de marcar o evento como manipulado.You can implement a class handler that has the behavior of marking the event as handled. Portanto, os manipuladores de instância para um evento de classe manipulado não são invocados, a menos que os manipuladores de instância se registrem especificamente para eventos manipulados.Therefore, instance handlers for a class-handled event are not invoked unless the instance handlers register specifically for handled events.

Muitos dos eventos do elemento base WPFWPF fornecem métodos virtuais de manipulação de classe.Many of the WPFWPF base element events provide class handling virtual methods. Ao substituir esses métodos em classes que herdam as classes base, você pode implementar a manipulação de classes sem chamar RegisterClassHandler em construtores estáticos.By overriding these methods in classes that inherit the base classes, you can implement class handling without calling RegisterClassHandler in static constructors. Esses métodos de manipulação de classe normalmente existem para eventos de entrada e têm nomes que começam com "on" e terminam com o nome do evento que está sendo manipulado pela classe.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.

Para obter mais informações sobre manipulação de classes, consulte marcação de eventos roteados como manipulados e manipulação de classes.For more information about class handling, see Marking Routed Events as Handled, and Class Handling.

Usando essa assinatura, os manipuladores de classe podem ser registrados para invocar eventos manipulados, definindo handledEventsToo definido como true.Using this signature, class handlers can be registered to invoke upon handled events, by setting handledEventsToo set to true. Em geral, você deve fazer isso somente se houver um problema de manipulação conhecido que você está tentando solucionar, como a manipulação do sistema de entrada de eventos de mouse ou de teclado.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.

Aplica-se a