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és 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 n’est pas appelé si l’événement routé est déjà marqué comme géré. La valeur par défaut est false.
Ne demandez pas régulièrement de réacheminer un événement routé, car il interfère avec la conception prévue du système d’événements Windows Runtime pour la composition de contrôle.
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 tapé. L’emplacement typique des gestionnaires de câbles est chargé pour une page ou OnApplyTemplate pour un contrôle 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 spécifique 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 destiné principalement 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. Seuls un petit nombre d’événements Windows Runtime ont cet identificateur ; seuls les événements routés sur UIElement ont 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 clés 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 peuvent donc être traités par des gestionnaires inscrits par un AddHandler appel :
- Doubletapped
- DragEnter
- DragLeave
- DragOver
- Déposer
- Conservation
- KeyDown
- KeyUp
- ManipulationCompleted
- ManipulationDelta
- ManipulationInertiaStarting
- ManipulationStarted
- Manipulationstarting
- PointerCanceled
- PointerCaptureLost
- Pointeur entré
- PointerExited
- PointerMoved
- PointerPressed
- PointerReleased
- PointerWheelChanged
- RightTapped
- Exploité
Paramètre du 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 de délégué. Cela nécessite une déréférencement, et la syntaxe de déréférence varie en fonction du langage que vous utilisez. Consultez les exemples de cette rubrique.
Quand utiliser handledEventsToo
Le traitement des événements d’entrée de bas niveau de manière pratique est une tâche complexe. De nombreux contrôles implémentent le comportement où un certain événement est marqué comme géré et remplacé par un autre événement plus intuitif. En règle générale, un contrôle marque un événement routé comme géré uniquement s’il existe une intention de conception pour le faire. Toutefois, dans certains scénarios, ces intentions de conception peuvent ne pas être ce que votre gestion particulière de l’événement d’entrée nécessite. C’est pour ces scénarios que l’inscription de gestionnaires est handledEventsTootrue appropriée. Mais vous ne devez pas le faire régulièrement. L’appel de gestionnaires en réponse à tous les événements, même si gérés compliquera votre propre logique de traitement des événements d’application. Vous pouvez voir une diminution 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 de l’application.
Une autre technique permettant d’éviter le comportement de gestion des classes d’un contrôle consiste à sous-classer ce contrôle et à remplacer 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 géré. Pour plus d’informations, consultez Vue d’ensemble des événements et des événements routés.