Erweitern Minimieren

UIElement.PointerEntered Event

Tritt ein, wenn ein Zeiger in den berührungsempfindlichen Bereich dieses Elements eintritt.

Syntax


public event PointerEventHandler PointerEntered


<uiElement PointerEntered="eventhandler"/>

Ereignisinformationen

Delegat PointerEventHandler

Hinweise

Das PointerEntered-Ereignis löst als Reaktion auf einen Zeiger, der sich in den umgebenden Bereich des Elements bewegt, aus. Fingereingabe, Maus und Stift-/Tablettstiftinteraktionen werden als Zeigereingabe in Windows Store-Apps empfangen, verarbeitet und verwaltet. Alle Geräte und ihre Interaktionen können ein PointerEntered-Ereignis erstellen. Weitere Informationen finden Sie unter Schnellstart: Zeiger und in den anderen Hinweisen in diesem Thema.

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

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.

PointerEntered 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 PointerEntered-Eingabeereignisses vornehmen. Wenn das der Fall ist, verfügt das Steuerelement wahrscheinlich über eine Überschreibung für die Methode OnPointerEntered. In der Regel wird das Ereignis nicht vom Klassenhandler als bearbeitet markiert, sodass das PointerEntered-Ereignis noch durch den Benutzercode für das Steuerelement in der Benutzeroberfläche behandelt werden kann. Weitere Informationen dazu, wie die klassenbasierte Behandlung für Ereignisse funktioniert, finden Sie unter Eingabeereignishandler in Steuerelementen.

PointerEntered für Maus- und Stift-/Tablettstifteingabe

Ein Mauseingabegerät hat einen Bildschirm-Cursor, der angezeigt wird, wenn die Maus bewegt wird, auch wenn zu dem Zeitpunkt keine Maustaste gedrückt wird. Ein PointerEntered-Ereignis wird dem ersten PointerMoved-Ereignis vorangestellt, das vom Element ausgelöst wird. Ein ähnliches Verhalten ist für die Stiftsgeräteeingabe verfügbar, wo die Eingabegeräte erkennen, wenn der Tablettstift leicht über der Eingabegeräteoberfläche (IsInRange) schwebt, ohne sie zu berühren. Maus- und Stiftgeräteeingaben lösen daher PointerEntered-Ereignisse in etwas anderen Fällen aus als Berührungsereignisse. Weitere Informationen finden Sie unter Reaktion auf Mausinteraktionen.

PointerEntered für Fingereingabe

Ein Berührungspunkt kann nur ermittelt werden, wenn ein Finger die Oberfläche berührt. Wenn eine Fingereingabeaktion zu einem PointerPressed-Ereignis führt, findet unmittelbar vor diesem Ereignis ein PointerEntered-Ereignis statt, wobei alle Ereignisdaten dieselben Informationen für beide Ereignisse (dieselbe Zeiger-ID, dieselbe Position usw.) sind. Anders ausgedrückt, der Zeiger wird für die Eingabe des Elements zu dem Zeitpunkt und an der Position berücksichtigt, wenn das Element von einem Berührungspunkt berührt wird.

Alternativ generiert ein Kontaktpunkt PointerEntered, wenn ein Zeiger während der Bewegung in ständigem Kontakt mit der Oberfläche bleibt, und tritt in die Treffertestgrenzen eines Elements ein. Bei diesen Arten von Fingereingabeaktionen kann die Aktion auch als Manipulation verarbeitet werden oder als Geste und nicht als Zeigerereignis. Weitere Informationen finden Sie unter Schnellstart: Fingereingabe.

Routingereignisverhalten für PointerEntered

PointerEntered ist ein Routingereignis. Weitere Informationen zum Routingereigniskonzept finden Sie in der Übersicht über Ereignisse und Routingereignisse. Sie können mehrere PointerEntered-Ereignisse für Elemente in einer XAML-Benutzeroberfläche definieren, auch für Elemente, die in einer Beziehung zwischen übergeordneten und untergeordneten Elementen stehen. In einer typischen UI-Komposition liegen die untergeordneten Elemente innerhalb der Begrenzungen eines übergeordneten Elements. In diesem Fall tritt das PointerEntered-Ereignis zunächst für das übergeordnete Element auf, wenn der Zeiger in das übergeordnete Element bewegt wird, und anschließend für das untergeordnete Element, wenn der Zeiger dorthin bewegt wird. Das PointerEntered-Ereignis steigt normalerweise nicht zum übergeordneten Element auf, wenn das untergeordnete Element es ausgelöst, da sich der Zeiger vom Prinzip her bereits innerhalb der Grenzen des übergeordneten Elements befindet und es verwirrend für das Eingabesystem wäre, das PointerEntered-Ereignisvorkommen auch an das übergeordnete Element weiterzuleiten. Normalerweise sollen PointerEntered-Ereignisse nicht weitergeleitet werden, sie sollen nur vom Absender verarbeiten werden. Ereignisrouting Sie können ausdrücklich verhindern, indem Sie im Handler Handled auf true festlegen.

In seltenen Fällen ist es möglich, eine PointerEntered-Ereignisblase zum übergeordneten Element anzuzeigen. Wenn Sie beispielsweise eine RenderTransform verwendet haben, um ein untergeordnetes Element außerhalb der Grenzen des übergeordneten zu versetzen, wird das Ereignis beim Eingeben des untergeordneten Elements an das übergeordnete Element weitergeleitet und stellt die Ereignisinformationen abhängig davon bereit, wie das untergeordnete Element das Ereignis ausgelöst hat.

Zeigererfassung

Wenn ein anderes Element den Zeiger erfasst hat, löst PointerEntered nicht aus, selbst wenn der erfasste Zeiger die Grenzen eines Elements überschreitet. Wenn die Zeigererfassung freigegeben wird, während der Mauszeiger über dem Element ist, wird PointerEntered dann ausgelöst, selbst wenn der Zeiger in diesem Fall möglicherweise stationär geblieben ist. Der Wert von GetCurrentPoint aus den Ereignisdaten ist eher ein Punkt irgendwo in der Mitte eines Element, als ein Punkt an den Rändern, da sich der Zeiger bereits über dem Element befand, als die Erfassung freigegeben wurde. Weitere Informationen zur Zeigererfassung finden Sie unter CapturePointer oder Reaktion auf Mausinteraktionen.

Visuelle PointerOver-Zustände für Steuerelemente

Steuerelemente, die Steuerelementvorlagen haben, können visuelle Zustände anwenden, die nur dann aktiv sind, wenn sich ein Zeiger über den Grenzen des Steuerelements befindet. Es ist nicht immer erforderlich, PointerEntered oder PointerExited zu behandeln, um dieses Verhalten abzurufen oder zu ändern. Sie müssen möglicherweise eine neue Vorlage für das Steuerelement erstellen. Wenn Sie aus einem vorhandenen Steuerelement ableiten, das bereits über die Eingabebehandlung auf niedriger Ebene verfügt, die visuelle Zustände aufruft, sollten Sie einen visuellen Zustand mit dem Namen "PointerOver" in der "CommonStates"-VisualStateGroup bereitstellen, und die integrierte Steuerelementlogik lädt den visuellen Zustand, wenn sich ein Zeiger über dem Steuerelement befindet. Ein visueller Zustand für Zeiger-über findet sich häufig auf Steuerelementen, die aufgerufen oder ausgewählt werden können, beispielsweise Button oder ListViewItem. Wenn Sie von einer Basisklasse wie Control ableiten, die über keine integrierte Eingabeereignisbehandlung verfügt, die visuelle Zustände aufruft, müssen Sie OnPointerEntered und OnPointerExited überschreiben, um dieses Verhalten nachzubilden. Weitere Informationen finden Sie unter Storyboard-Animationen für visuelle Zustände.

Windows 8-Verhalten

Bei Windows 8 wird in der Regel das PointerEntered-Ereignis nicht ausgelöst, wenn der Bildschirm-Cursor (oder Tablettstift oder Berührungspunkt) nicht tatsächlich bewegt wurde. Beispielsweise wird PointerEntered nicht ausgelöst, wenn die Maus und ihr Bildschirm-Cursor unverändert bleiben und ein Objekt mit einem PointerEntered-Handler seine Position ändert oder anderweitig unter dem Bildschirm-Cursor verschoben wird. Oder PointerEntered löst nicht aus, wenn ein Element wie ein Popup oder ein Flyout ausgeblendet wird und sich der Zeiger jetzt über einem neuen Element befindet (und sich der Zeiger noch nicht bewegt hat). Verwandt hiermit ist das PointerExited-Verhalten. Wenn beispielsweise ein Popup programmgesteuert ausgeblendet wird und der Zeiger als Ursache der Ausblendung nicht bewegt wurde, wird PointerExited nicht ausgelöst. Sie können ein PointerEntered-Ereignis auch noch abrufen, wenn der Mauszeiger bewegt wird, während er sich über dem neu angezeigten Element befindet. Dieser Vorgang wird jedoch nach dem Ermessen des Benutzers ausgeführt und erfolgt zum Zeitpunkt der Bewegung, nicht im Moment des Loslassens. Kurz gesagt ist der Versuch, unter Windows 8 das letzte Element, das PointerEntered ausgelöst hat, für die Zeigerbestimmung in der App-Benutzeroberfläche zu verwenden, nicht universell verwendbar, und es gibt viele Szenarien, in denen PointerEntered und PointerExited unterschiedliche Werte annehmen. Dies wirkt sich auf die visuellen Zustände für Steuerelemente aus, die PointerEntered und PointerExited auch als Trigger verwenden.

Ab Windows 8.1 wird PointerExited für jeden Fall ausgelöst, in dem der Mauszeiger einmal ein PointerEntered-Ereignis ausgelöst hat, aber einige Benutzeroberflächen-Zustandsänderungen treten auf, wenn sich der Zeiger nicht mehr innerhalb dieses Elements befindet. Dies gilt auch für Fälle, in denen das ganze Element ausgeblendet wird. Und wenn sich der Zeiger jetzt über einem anderen Element befindet, weil ein früheres Element ausgeblendet wurde, löst dieses Elements PointerEntered aus, auch wenn sich der Zeiger nie bewegt hat. Wenn Elemente ihre Visibility programmgesteuert auf Collapsed festlegen, können sie möglicherweise aus der Benutzeroberfläche ausgeblendet werden. Das Windows 8.1-Verhalten behandelt diese Fälle und löst PointerExited für das Collapsed -Element und PointerEntered für das darunterliegende Element aus.

Wenn Sie den App-Code von Windows 8 zu Windows 8.1 migrieren, sollten Sie diese Verhaltensänderung berücksichtigen, da der Code PointerExited und PointerEntered auslöst, was er zuvor nicht gemacht hat.

Apps, die für Windows 8 kompiliert wurden, jedoch unter Windows 8.1 ausgeführt werden, verwenden weiterhin das Windows 8-Verhalten.

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
OnPointerEntered
PointerExited
Schnellstart: Fingereingabe
Schnellstart: Verarbeiten der Zeigereingabe
Treffertest und Eingabeereignisse
Beispiel für XAML-Benutzereingabeereignisse

 

 

Anzeigen:
© 2014 Microsoft