Erweitern Minimieren

UIElement.AddHandler Method

Fügt einen Routingereignis-Handler für ein bestimmtes Routingereignis hinzu, wobei der Handler zur Handlerauflistung für das aktuelle Element hinzugefügt wird. Geben Sie handledEventsToo als true an, damit der bereitgestellte Handler auch dann aufgerufen wird, wenn das Ereignis an anderer Stelle behandelt wird.

Syntax


public void AddHandler(
  RoutedEvent routedEvent, 
  object handler, 
  bool handledEventsToo
)

Parameter

routedEvent

Typ: RoutedEvent

Ein Bezeichner für das zu behandelnde Routingereignis.

handler

Typ: System.Object [.NET] | Platform::Object [C++]

Ein Verweis auf die Handlerimplementierung.

handledEventsToo

Typ: System.Boolean [.NET] | Platform::Boolean [C++]

true, um den Handler so zu registrieren, dass er selbst dann aufgerufen wird, wenn das Routingereignis in den Ereignisdaten als behandelt markiert wurde.

false, wenn der Handler mit der Standardbedingung registriert werden soll, dass er nicht aufgerufen wird, wenn das Routingereignis bereits als behandelt markiert ist. Die Standardeinstellung lautet false.

Stellen Sie keine Routineanforderung zum erneuten Behandeln eines Routingereignisses, da dies Auswirkungen auf den beabsichtigten Entwurf des Windows Runtime-Ereignissystems für die Steuerelementzusammenstellung haben kann.

Hinweise

Verwenden Sie die AddHandler-Methode nicht als allgemeinen Ersatz für die sprachspezifische Syntax, die normalerweise für das Verknüpfen von Ereignishandlern genutzt wird. Dies funktioniert nicht, da nicht alle Ereignisse einen Bezeichner haben, den Sie als routedEvent übergeben können. AddHandler ist speziell für Routingereignisse und in erster Linie für das Szenario gedacht, das durch die Übergabe von handledEventsToo als true aktiviert wird. Weitere Informationen finden Sie unter Übersicht über Ereignisse und Routingereignisse.

Routingereignisbezeichner

Der Bezeichner des Routingereignisses ist immer eine statische Eigenschaft von UIElement. Um zum Beispiel einen Handler für das Ereignis KeyUp hinzuzufügen, übergeben Sie KeyUpEvent für diesen Parameter. Nur wenige der Windows-Runtime-Ereignisse besitzen diesen Bezeichner. Nur Routingereignisse für UIElement besitzen eine Bezeichnungs-API für diesen Zweck. In der Regel sind dies Ereignisse, die auf verschiedenen Ebenen mit Eingabeaktionen verknüpft sind, wie auf Zeiger-, Gesten- und Manipulationsebene. Außerdem können die Schlüsseleingabe-Ereignisse jetzt auf diese Weise bearbeitet werden.

Hier ist eine Liste der Routingereignisse, die einen Routingereignisbezeichner verfügbar machen. Daher kann sie von Handlern verarbeitet werden, die mithilfe eines AddHandler-Aufrufs registriert werden:

Der handler-Parameter

Der handler-Parameter ist ein nicht typisierter Parameter. Sie sollten jedoch einen neuen Delegaten bereitstellen, der auf eine Handlermethode verweist, die auf das gewünschte Ereignis festgelegt ist. Wenn Sie beispielsweise ein KeyUp-Ereignis behandeln, übergeben Sie eine neue KeyEventHandler-Instanz, die auf eine Methode verweist, die auf dieser KeyEventHandler-Signatur des Delegaten basiert. Dies erfordert eine Dereferenzierung, und die Dereferenzierungssyntax variiert je nach verwendeter Sprache. Weitere Informationen finden Sie in den Beispielen dieses Themas.

Empfohlene Verwendung von handledEventsToo

Das effiziente Verarbeiten von Eingabeereignissen auf niedriger Ebene ist immer eine komplexe Aufgabe. Viele Steuerelemente implementieren ein Verhalten, bei dem ein bestimmtes Ereignis als behandelt markiert wird und durch ein anderes, intuitiveres Ereignis ersetzt wird. Im Allgemeinen markiert ein Steuerelement ein Routingereignis nur dann als behandelt, wenn im Entwurf damit ein bestimmtes Ziel verfolgt wird. In bestimmten Szenarien jedoch entsprechen diese Entwurfsziele möglicherweise nicht den jeweiligen Anforderungen an die Behandlung des Eingabeereignisses. In diesen Szenarien empfiehlt sich das Registrieren von Handlern mit handledEventsToo als true. Dies sollte jedoch nicht routinemäßig ausgeführt werden. Das Aufrufen von Handlern für alle Ereignisse, selbst wenn diese bereits behandelt sind, gestaltet die Ereignisverarbeitungslogik in der App sehr kompliziert. Möglicherweise ist eine Abnahme der Leistung zu verzeichnen, wenn die Handlerlogik umfangreich ist. Sie sollten Handler nur dann an bereits behandelte Ereignisse anfügen, wenn Sie ermittelt haben, dass bestimmte Steuerelemente Ereignisse behandeln, die Sie mit App-Logik behandeln möchten.

Eine andere Technik zum Vermeiden des Klassenbehandlungsverhaltens eines Steuerelements ist, dieses Steuerelement unterzuordnen und seine On*-Methoden zu überschreiben, die vorkonfigurierte Überschreibungen sind, durch die das Steuerelement ein Ereignis als behandelt markiert. Aber auch dies kann kompliziert sein. Sie müssen möglicherweise die Implementierung der Behandlung eines Steuerelements reproduzieren, ohne die Basisimplementierung aufzurufen, da die Basisimplementierung das Ereignis als behandelt markieren würde. Weitere Informationen finden Sie unter Übersicht über Ereignisse und Routingereignisse.

Beispiele

In diesem Beispiel wird die grundlegende Syntax zum Verknüpfen eines Ereignishandlers mit AddHandler und handledEventsToo als true gezeigt. In diesem Fall ist Tapped das übertragene Ereignis. Die typische Stelle zum Verknüpfen von Handlern ist entweder Loaded für eine Seite oder OnApplyTemplate für ein Steuerelement mit Vorlagen.


        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);
        }


Anforderungen

Mindestens unterstützter Client

Windows 8

Mindestens unterstützter Server

Windows Server 2012

Namespace

Windows.UI.Xaml
Windows::UI::Xaml [C++]

Metadaten

Windows.winmd

Siehe auch

UIElement
RemoveHandler
Übersicht über Ereignisse und Routingereignisse.
Schnellstart: Fingereingabe

 

 

Anzeigen:
© 2014 Microsoft