UIElement.AddHandler(RoutedEvent, Object, Boolean) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Ajoute un gestionnaire d’événements routé pour un événement routé spécifié, en ajoutant le gestionnaire à la collection de gestionnaires sur l’élément actuel. Spécifiez handledEventsToo
que true
le gestionnaire fourni doit être appelé même si l’événement est géré ailleurs.
public:
virtual void AddHandler(RoutedEvent ^ routedEvent, Platform::Object ^ handler, bool handledEventsToo) = AddHandler;
void AddHandler(RoutedEvent const& routedEvent, IInspectable const& handler, bool const& handledEventsToo);
public void AddHandler(RoutedEvent routedEvent, object handler, bool handledEventsToo);
function addHandler(routedEvent, handler, handledEventsToo)
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Object, handledEventsToo As Boolean)
Paramètres
- routedEvent
- RoutedEvent
Identificateur de l’événement routé à gérer.
- handler
-
Object
Platform::Object
IInspectable
Référence à l’implémentation du gestionnaire.
- handledEventsToo
-
Boolean
bool
true
pour inscrire le gestionnaire de sorte qu’il soit appelé même lorsque l’événement routé est marqué comme géré dans ses données d’événement.
false
pour inscrire le gestionnaire avec la condition par défaut qu’il ne sera pas appelé si l’événement routé est déjà marqué comme géré. Par défaut, il s’agit de false
.
Ne demandez pas systématiquement à rehanding un événement routé, car il interfère avec la conception prévue du système d’événements Windows Runtime pour la composition des contrôles.
Exemples
Cet exemple montre la syntaxe de base pour le câblage d’un gestionnaire d’événements avec AddHandler
et handledEventsToo
en tant que true
. Dans ce cas, l’événement câblé est appuyé. L’emplacement classique pour les gestionnaires de câbles est Chargé pour une page ou OnApplyTemplate pour un contrôle avec modèle.
void MainPage::pageRoot_Tapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e)
{
//implementation
}
void MainPage::pageRoot_Loaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
this->AddHandler(UIElement::TappedEvent, ref new TappedEventHandler(this, &MainPage::pageRoot_Tapped), true);
}
private void pageRoot_Tapped(object sender, TappedRoutedEventArgs e)
{
//implementation
}
private void pageRoot_Loaded_1(object sender, RoutedEventArgs e)
{
this.AddHandler(UIElement.TappedEvent, new TappedEventHandler(pageRoot_Tapped), true);
}
Remarques
N’essayez pas d’utiliser AddHandler
comme substitut général de la syntaxe propre au langage que vous utilisez normalement pour les gestionnaires d’événements de câblage; cela ne fonctionnera pas, car tous les événements n’ont pas d’identificateur que vous pouvez passer en tant que routedEvent
.
AddHandler
est spécifiquement destiné aux événements routés, et principalement destiné au scénario particulier activé en passant handledEventsToo
en tant que true
. Pour plus d’informations, consultez Vue d’ensemble des événements et des événements routés.
Identificateurs d’événement routés
L’identificateur d’événement routé est généralement un membre de propriété statique d’UIElement. Par exemple, pour ajouter un gestionnaire pour l’événement KeyUp , passez KeyUpEvent pour ce paramètre. Seul un petit nombre d’événements Windows Runtime ont cet identificateur ; seuls les événements routés sur UIElement disposent d’une API d’identificateur disponible pour cette utilisation. Il s’agit généralement d’événements liés aux actions d’entrée à différents niveaux : niveau pointeur, niveau de mouvement, niveau de manipulation. En outre, les événements d’entrée de clé peuvent être gérés de cette façon.
Voici une liste d’événements routés qui exposent un identificateur d’événement routé et qui peuvent donc être traités par des gestionnaires inscrits par un AddHandler
appel :
- DoubleTapped
- DragEnter
- DragLeave
- DragOver
- Goutte
- Holding
- Keydown
- Keyup
- ManipulationCompleted
- ManipulationDelta
- ManipulationInertiaStarting
- ManipulationStarted
- ManipulationStarting
- PointerCanceled
- PointerCaptureLost
- PointerEntered
- PointerExited
- PointerMoved
- PointerPressed
- PointerReleased
- PointerWheelChanged
- RightTapped
- Tapped
Paramètre de gestionnaire
Le handler
paramètre est un paramètre non typé, mais vous devez fournir un nouveau délégué qui référence une méthode de gestionnaire spécifique à l’événement souhaité. Par exemple, si vous gérez un événement KeyUp, transmettez une nouvelle instance KeyEventHandler qui référence une méthode basée sur cette KeyEventHandler
signature déléguée. Cela nécessite une déréférencement, et la syntaxe de déréférencement varie en fonction du langage que vous utilisez. Consultez les exemples de cette rubrique.
Quand utiliser handledEventsToo
Le traitement pratique des événements d’entrée de bas niveau est une tâche complexe. De nombreux contrôles implémentent un comportement où un événement est marqué comme géré et est remplacé par un autre événement plus intuitif. En règle générale, un contrôle marque un événement routé comme étant géré uniquement s’il y a une intention de conception de le faire. Toutefois, dans certains scénarios, ces intentions de conception peuvent ne pas être celles requises par votre gestion particulière de l’événement d’entrée. C’est pour ces scénarios que l’inscription des gestionnaires avec handledEventsToo
true
le cas échéant. Mais vous ne devriez pas le faire régulièrement. L’appel de gestionnaires en réponse à tous les événements, même s’ils sont gérés, complique votre propre logique de traitement des événements d’application. Vous pouvez constater une baisse des performances si la logique du gestionnaire est importante. Vous devez attacher des gestionnaires à des événements déjà gérés uniquement si vous avez découvert que certains contrôles gèrent des événements que vous souhaitez gérer avec la logique d’application.
Une autre technique pour éviter le comportement de gestion de classes d’un contrôle consiste à sous-classe qui contrôle et remplace ses méthodes OnEvent , qui sont des remplacements préconfigurés par lesquels le contrôle marque un événement comme géré. Toutefois, cela peut également être complexe. Vous devrez peut-être reproduire l’implémentation de gestion d’un contrôle sans appeler l’implémentation de base, car l’implémentation de base marque l’événement comme étant géré. Pour plus d’informations, consultez Vue d’ensemble des événements et des événements routés.