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 PreviewMouseLeftButtonDown , 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 associati implementati con il supporto degli eventi indirizzati. Un gestore classi è simile a un gestore statico esistente per tutte le istanze della classe . Poiché il gestore è statico, non è possibile modificare direttamente le proprietà dell'istanza con un gestore di classi, ma è possibile accedere alle istanze tramite il parametro sender e/o i dati dell'evento.

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

Molti degli eventi degli elementi 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 dell'evento gestito dalla classe.

Per altre informazioni sulla gestione delle classi, vedere Contrassegno degli eventi indirizzati comegestiti e Gestione delle classi.

Usando questa firma, i gestori di classi verranno registrati per richiamare solo in risposta a eventi non gestiti. È anche possibile registrare gestori di classi da richiamare anche se gli argomenti dell'evento sono contrassegnati come gestiti, usando la firma RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) , con impostato su handledEventsToo 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 associati implementati con il supporto degli eventi indirizzati. Un gestore classi è simile a un gestore statico esistente per tutte le istanze della classe . Poiché il gestore è statico, non è possibile modificare direttamente le proprietà dell'istanza con un gestore di classi, ma è possibile accedere alle istanze tramite il parametro sender e/o i dati dell'evento.

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

Molti degli eventi degli elementi 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 dell'evento gestito dalla classe.

Per altre informazioni sulla gestione delle classi, vedere Contrassegno degli eventi indirizzati comegestiti 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 risolvere, ad esempio la gestione del sistema di input da eventi del mouse o della tastiera.

Si applica a