Erweitern Minimieren

UIElement.PointerPressed Event

Tritt ein, wenn das Zeigergerät eine Press Aktion innerhalb dieses Elements initiiert.

Syntax


public event PointerEventHandler PointerPressed


<uiElement PointerPressed="eventhandler"/>

Ereignisinformationen

Delegat PointerEventHandler

Hinweise

Fingereingabe, Maus und Stift-/Tablettstiftinteraktionen werden als Zeigereingabe in Windows Store-Apps empfangen, verarbeitet und verwaltet. Alle Interaktionen können ein PointerPressed-Ereignis erstellen. Weitere Informationen finden Sie unter Schnellstart: Zeiger. Zeigerereignisse sind für Szenarien vorgesehen, in denen mehrere Zeiger sowie ihre Beziehungen für Sie von Interesse sind oder Sie bestimmte Merkmale jedes Zeigers (z. B. genaue Koordinatenposition) überprüfen möchten. Andernfalls können Sie Gestenereignisse wie Tapped behandeln.

Verwenden Sie einen auf PointerEventHandler basierenden Handler, um dieses Ereignis zu behandeln.

Mauseingaben werden einem einzelnen Zeiger zugeordnet, der zugewiesen wird, wenn die Mauseingabe anfänglich erkannt wird. Wenn auf eine Maustaste geklickt wird (links, Rad oder rechts), wird eine sekundäre Zuordnung zwischen dem Zeiger und dieser Taste vom PointerPressed-Ereignis erstellt. Das PointerReleased-Ereignis wird nur ausgelöst, wenn die gleiche Maustaste losgelassen wird (keine andere Schaltfläche kann dem Zeiger zugeordnet werden, bis dieses Ereignis abgeschlossen ist). Aufgrund dieser exklusiven Zuordnung werden andere Maustastenklicks über das PointerMoved-Ereignis weitergeleitet. Sie können den Maustastenzustand testen, wenn Sie dieses Ereignis behandeln, wie im folgenden Beispiel dargestellt.


private void Target_PointerMoved(object sender, PointerRoutedEventArgs e)
{
    Windows.UI.Xaml.Input.Pointer ptr = e.Pointer;

    // Multiple, simultaneous mouse button inputs are processed here.
    // Mouse input is associated with a single pointer assigned when 
    // mouse input is first detected. 
    // Clicking additional mouse buttons (left, wheel, or right) during 
    // the interaction creates secondary associations between those buttons 
    // and the pointer through the pointer pressed event. 
    // The pointer released event is fired only when the last mouse button 
    // associated with the interaction (not necessarily the initial button) 
    // is released. 
    // Because of this exclusive association, other mouse button clicks are 
    // routed through the pointer move event.          
    if (ptr.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)
    {
        // To get mouse state, we need extended pointer details.
        // We get the pointer info through the getCurrentPoint method
        // of the event argument. 
        Windows.UI.Input.PointerPoint ptrPt = e.GetCurrentPoint(Target);
        if (ptrPt.Properties.IsLeftButtonPressed)
        {
            eventLog.Text += "\nLeft button: " + ptrPt.PointerId;
        }
        if (ptrPt.Properties.IsMiddleButtonPressed)
        {
            eventLog.Text += "\nWheel button: " + ptrPt.PointerId;
        }
        if (ptrPt.Properties.IsRightButtonPressed)
        {
            eventLog.Text += "\nRight button: " + ptrPt.PointerId;
        }
    }

    // Prevent most handlers along the event route from handling the same event again.
    e.Handled = true;

    // Display pointer details.
    updateInfoPop(e);
}


Zeigerereignisse von einem Mauseingabegerät haben im Allgemeinen für die Lebensdauer der Anwendung die gleiche PointerId in den Ereignisdetails.

PointerPressed ist ein Routingereignis. Weitere Informationen zum Routingereigniskonzept finden Sie in der Übersicht über Ereignisse und Routingereignisse.

Für Fingereingabeaktionen und interaktionspezifische oder Bearbeitungsereignisse, die Folgen einer Fingereingabeaktion sind, muss ein Element für Treffertests sichtbar sein, um die Ereignisquelle darzustellen und das Ereignis auszulösen, das der Aktion zugeordnet ist. UIElement.Visibility muss Visible sein. Andere Eigenschaften von abgeleiteten Typen wirken sich auch auf die Treffertestsichtbarkeit aus. Weitere Informationen finden Sie unter Treffertests und Eingabeereignisse.

PointerPressed unterstützt die Möglichkeit, Ereignishandler zur Route hinzufügen, die auch dann aufgerufen werden, wenn die Ereignisdaten für das Ereignis als Handled gekennzeichnet sind. Siehe AddHandler.

Bestimmte Windows-Runtime-Steuerelemente können eine klassenbasierte Behandlung des PointerPressed-Eingabeereignisses vornehmen. Wenn das der Fall ist, verfügt das Steuerelement wahrscheinlich über eine Überschreibung für die Methode OnPointerPressed. In der Regel wird das Ereignis vom Klassenhandler als behandelt markiert, sodass auf diesem Steuerelement für das PointerPressed-Ereignis keine Aktion zum Behandeln durch einen Benutzercodehandler ausgelöst wird. Beispielsweise verfügt ButtonBase über eine Klassenbehandlung, die PointerPressed behandelt und stattdessen Click auslöst. Weitere Informationen dazu, wie die klassenbasierte Behandlung für Ereignisse funktioniert, finden Sie unter Eingabeereignishandler in Steuerelementen.

Steuerelemente können auch eine PointerDownThemeAnimation-Persönlichkeitsanimation haben, die unabhängig vom Ereignis ausgeführt wird.

Zeigererfassung

PointerPressed wird manchmal beim Erfassen des Zeigers als auslösendes Ereignis verwendet, sodass weitere mit dem Zeiger verknüpfte Ereignisse alle durch ein bestimmtes Element erfasst werden, solange der Zeiger unten bleibt. Um einen Zeiger zu erfassen, rufen Sie die CapturePointer-Methode für ein bestimmtes Benutzeroberflächenelement auf, das die Erfassung beibehalten soll. Dies wird normalerweise innerhalb eines PointerPressed-Ereignishandlers ausgeführt, und Sie rufen CapturePointer auf dem sender des Ereignisses auf. Weitere Informationen dazu, wie und warum ein Zeiger erfasst werden kann, finden Sie unter CapturePointer.

PointerPressed und Gestenereignisse oder Bearbeitungsereignisse

Die Benutzeraktionen, die ursprünglich einPointerPressed-Ereignis auslöst, kann schließlich zu einem Holding-Ereignis führen, das eine Hold-Geste darstellt, es sei denn, das Eingabegerät ist eine Maus. Wenn das Element, in dem PointerPressed auftritt, einen nicht standardmäßigen ManipulationMode-Wert hat, dann führt dies zu verschiedenen Bearbeitungsereignissen wie ManipulationStarted. Weitere Informationen finden Sie unter "Verwenden von Bearbeitungsereignissen" unter Schnellstart: Fingereingabe.

Wenn PointerPressed ausgelöst wird, werden Gestenereignisse wie Tapped noch nicht ausgelöst, da andere Gestenereignisse als Holding warten, bis der Zeiger freigegeben wird, bevor ein Ereignis ausgelöst wird.

Als allgemeine Entwurfsregel für die Benutzerinteraktionen der App sollten Sie überprüfen, ob es steuerelementspezifische Ereignisse gibt, die Sie für eine Interaktion behandeln können, oder entsprechende Gestenereignisse. Wenn das Steuerelement beispielsweise eine Button ist, verfügt dieses Steuerelement über ein Click-Ereignis, das speziell für den Fall vorgesehen ist, dass der Benutzer die Aktion der Schaltfläche aufruft. Wenn das Element keine Schaltfläche ist, Sie jedoch ein Ereignis für die primäre Aktion eines Elements behandeln, müssen Sie alternativ Tapped behandeln.

Gestenereignisse können für einzelne Elemente explizit deaktiviert werden, indem Sie Eigenschaften wie IsTapEnabled einstellen. Sie können die Gestenereignisse deaktivieren, wenn Sie die Manipulationen verarbeiten, Sie müssen in der Regel jedoch nicht die Gestenereignisse deaktivieren, wenn Sie Zeigerereignisse behandeln. Zeigerereignisse können nicht explizit deaktiviert werden. Sie können jedoch angeben, dass diese nicht behandelt werden sollen.

PointerPressed und PointerReleased

Andere Ereignisse als PointerReleased können am Ende der Aktion ausgelöst werden—beispielsweise PointerCanceled oder PointerCaptureLost. Verlassen Sie sich nicht auf PointerPressed-Ereignisse und PointerReleased-Ereignisse, die immer paarweise auftreten. Um ordnungsgemäß zu funktionieren, muss die App auf alle Ereignisse, die mögliche Ergebnisse der Press Aktion darstellen, lauschen und diese behandeln. Einige der Gründe eventuell kein PointerReleased-Vorkommen zu erhalten sind:

  • Unterschiede dahingehend, wie durch bestimmte Hardware Touchaktionen und Press-Aktionen gehandhabt werden
  • Eine programmgesteuerte Zeigererfassung von einem anderen Zeiger
  • Benutzeraktionen, die die Beziehung des Anzeigebereichs ändern, beispielsweise das Ändern von Auflösungs- oder Bildschirmeinstellungen
  • Eingabeinteraktionen (wenn beispielsweise ein Stift dieselbe Oberfläche berührt wie zuvor ein Finger)

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
Tapped
PointerReleased
Schnellstart: Fingereingabe
Beispiel für XAML-Benutzereingabeereignisse

 

 

Anzeigen:
© 2014 Microsoft