Condividi tramite


EventManager.RegisterClassHandler Metodo

Definizione

Iscrive un gestore della classe per un particolare evento indirizzato.

Overload

RegisterClassHandler(Type, RoutedEvent, Delegate)

Iscrive un gestore della classe per un particolare evento indirizzato.

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Registra un gestore della classe per un particolare evento indirizzato, con l'opzione di gestire gli eventi in cui i dati degli eventi sono già contrassegnati come gestiti.

RegisterClassHandler(Type, RoutedEvent, Delegate)

Iscrive un gestore della classe per un particolare evento indirizzato.

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)

Parametri

classType
Type

Il tipo della classe che dichiara la gestione della classe.

routedEvent
RoutedEvent

L'identificatore dell'evento indirizzato dell'evento da gestire.

handler
Delegate

Un riferimento all'implementazione del gestore di classe.

Esempio

Nell'esempio seguente viene aggiunto un gestore per PreviewMouseRightButtonDownEvent, chiamando 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

Commenti

La gestione delle classi è una funzionalità disponibile per gli eventi indirizzati, inclusi gli eventi collegati implementati con il backup degli eventi indirizzati. Un gestore di classi è simile a un gestore statico che esiste per tutte le istanze della classe. Poiché il gestore è statico, non è possibile modificare le proprietà dell'istanza direttamente con un gestore di classi, ma è possibile accedere alle istanze tramite il sender parametro e/o i dati dell'evento.

I gestori di classi vengono richiamati prima dei gestori di istanze. È possibile implementare un gestore di classi con il comportamento del contrassegno dell'evento come gestito. Pertanto, i gestori di istanze per un evento gestito dalla classe non vengono richiamati a meno che i gestori di istanze registrino in modo specifico per gli eventi gestiti.

Molti degli eventi dell'elemento di base WPF forniscono metodi virtuali di gestione delle classi. Eseguendo l'override di questi metodi nelle classi che ereditano le classi di base, è possibile implementare la gestione delle classi senza chiamare RegisterClassHandler nei costruttori statici. Questi metodi di gestione delle classi esistono in genere per gli eventi di input e hanno nomi che iniziano con "On" e terminano con il nome della classe gestita dall'evento.

Per altre informazioni sulla gestione delle classi, vedere Contrassegnare gli eventi indirizzati come gestiti e gestione delle classi.

Usando questa firma, i gestori di classi verranno registrati per richiamare solo in risposta agli eventi non gestiti. È anche possibile registrare gestori di classi per richiamare anche se gli argomenti dell'evento vengono contrassegnati come gestiti usando la RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) firma, con handledEventsToo impostato su true.

Si applica a

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Registra un gestore della classe per un particolare evento indirizzato, con l'opzione di gestire gli eventi in cui i dati degli eventi sono già contrassegnati come gestiti.

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)

Parametri

classType
Type

Il tipo della classe che dichiara la gestione della classe.

routedEvent
RoutedEvent

L'identificatore dell'evento indirizzato dell'evento da gestire.

handler
Delegate

Un riferimento all'implementazione del gestore di classe.

handledEventsToo
Boolean

true per richiamare questo gestore della classe anche se gli argomenti dell'evento indirizzato sono stati contrassegnati come gestiti; false per mantenere il comportamento predefinito di non richiamare il gestore su qualsiasi evento contrassegnato come gestito.

Commenti

La gestione delle classi è una funzionalità disponibile per gli eventi indirizzati, inclusi gli eventi collegati implementati con il backup degli eventi indirizzati. Un gestore di classi è simile a un gestore statico che esiste per tutte le istanze della classe. Poiché il gestore è statico, non è possibile modificare le proprietà dell'istanza direttamente con un gestore di classi, ma è possibile accedere alle istanze tramite il sender parametro e/o i dati dell'evento.

I gestori di classi vengono richiamati prima dei gestori di istanze. È possibile implementare un gestore di classi con il comportamento del contrassegno dell'evento come gestito. Pertanto, i gestori di istanze per un evento gestito dalla classe non vengono richiamati a meno che i gestori di istanze registrino in modo specifico per gli eventi gestiti.

Molti degli eventi dell'elemento di base WPF forniscono metodi virtuali di gestione delle classi. Eseguendo l'override di questi metodi nelle classi che ereditano le classi di base, è possibile implementare la gestione delle classi senza chiamare RegisterClassHandler nei costruttori statici. Questi metodi di gestione delle classi esistono in genere per gli eventi di input e hanno nomi che iniziano con "On" e terminano con il nome della classe gestita dall'evento.

Per altre informazioni sulla gestione delle classi, vedere Contrassegnare gli eventi indirizzati come gestiti e gestione delle classi.

Usando questa firma, i gestori di classi possono essere registrati per richiamare gli eventi gestiti impostando handledEventsToo su true. In genere, è consigliabile eseguire questa operazione solo se si verifica un problema di gestione noto che si sta tentando di aggirare, ad esempio la gestione del sistema di input da eventi del mouse o della tastiera.

Si applica a