Partilhar via


EventManager.RegisterClassHandler Método

Definição

Registra um manipulador de classes para um evento roteado particular.

Sobrecargas

RegisterClassHandler(Type, RoutedEvent, Delegate)

Registra um manipulador de classes para um evento roteado particular.

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.

RegisterClassHandler(Type, RoutedEvent, Delegate)

Registra um manipulador de classes para um evento roteado particular.

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 está declarando a manipulação de classe.

routedEvent
RoutedEvent

O identificador de evento roteado do evento a ser manipulado.

handler
Delegate

Uma referência à implementação do manipulador de classe.

Exemplos

O exemplo a seguir adiciona um manipulador 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

Comentários

O tratamento de classe é um recurso que está disponível para eventos roteados, incluindo eventos anexados que são implementados com o suporte a eventos roteados. Um manipulador de classe é como um manipulador estático que existe para todas as instâncias da classe. Como o manipulador é estático, você não pode alterar as propriedades da instância diretamente com um manipulador de classe, mas pode acessar instâncias por meio do sender parâmetro e/ou dos dados do evento.

Os manipuladores de classe são invocados antes dos manipuladores de instância. Você pode implementar um manipulador de classe que tenha o comportamento de marcar o evento como manipulado. Portanto, os manipuladores de instância para um evento manipulado por classe não são invocados, a menos que os manipuladores de instância se registrem especificamente para eventos manipulados.

Muitos dos eventos de elemento base do WPF fornecem métodos virtuais de manipulação de classe. Substituindo esses métodos em classes que herdam as classes base, você pode implementar o tratamento de classe sem chamar RegisterClassHandler em construtores estáticos. Normalmente, esses métodos de tratamento de classe existem para eventos de entrada e têm nomes que começam com "Ativado" e terminam com o nome do evento sendo tratado de classe.

Para obter mais informações sobre manipulação de classe, consulte Marcando eventos roteado como manipulados e Tratamento de Classe.

Usando essa assinatura, os manipuladores de classe serão registrados para invocar apenas em resposta a eventos sem tratamento. Você também pode registrar manipuladores de classe para invocar mesmo se os argumentos de evento forem marcados como manipulados, usando a RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) assinatura, com definido truecomo handledEventsToo .

Aplica-se a

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.

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 está declarando a manipulação de classe.

routedEvent
RoutedEvent

O identificador de evento roteado do evento a ser manipulado.

handler
Delegate

Uma referência à implementação do manipulador de classe.

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.

Comentários

O tratamento de classe é um recurso que está disponível para eventos roteados, incluindo eventos anexados que são implementados com o suporte a eventos roteados. Um manipulador de classe é como um manipulador estático que existe para todas as instâncias da classe. Como o manipulador é estático, você não pode alterar as propriedades da instância diretamente com um manipulador de classe, mas pode acessar instâncias por meio do sender parâmetro e/ou dos dados do evento.

Os manipuladores de classe são invocados antes dos manipuladores de instância. Você pode implementar um manipulador de classe que tenha o comportamento de marcar o evento como manipulado. Portanto, os manipuladores de instância para um evento manipulado por classe não são invocados, a menos que os manipuladores de instância se registrem especificamente para eventos manipulados.

Muitos dos eventos de elemento base do WPF fornecem métodos virtuais de manipulação de classe. Substituindo esses métodos em classes que herdam as classes base, você pode implementar o tratamento de classe sem chamar RegisterClassHandler em construtores estáticos. Normalmente, esses métodos de tratamento de classe existem para eventos de entrada e têm nomes que começam com "Ativado" e terminam com o nome do evento sendo tratado de classe.

Para obter mais informações sobre manipulação de classe, consulte Marcando eventos roteado como manipulados e Tratamento de Classe.

Usando essa assinatura, os manipuladores de classe podem ser registrados para invocar eventos manipulados, definindo handledEventsToo como true. Em geral, você só deve fazer isso se houver um problema de tratamento conhecido que você está tentando resolver, como o tratamento do sistema de entrada de eventos de mouse ou teclado.

Aplica-se a