IScrollAnchorProvider Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt einen Vertrag für ein Bildlaufsteuerelement an, das die Bildlaufankerung unterstützt.
public interface class IScrollAnchorProvider
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(2287858719, 62016, 23419, 167, 3, 191, 175, 57, 198, 162, 205)]
struct IScrollAnchorProvider
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.Guid(2287858719, 62016, 23419, 167, 3, 191, 175, 57, 198, 162, 205)]
public interface IScrollAnchorProvider
Public Interface IScrollAnchorProvider
- Abgeleitet
- Attribute
Hinweise
Bildlaufankerung
Die Bildlaufankerung erfolgt, wenn ein Bildlaufsteuerelement automatisch die Position des Viewports ändert, um zu verhindern, dass der Inhalt sichtbar springt. Der Sprung wird durch eine Änderung des Inhaltslayouts verursacht. Der Bildlaufankeranbieter wendet eine Schicht an, nachdem eine Änderung an der Position eines Ankerelements innerhalb des Inhalts beobachtet wurde.
Es liegt in der Verantwortung des implementierenden Bildlaufsteuerelements, um zu bestimmen, welche Richtlinie bei der Auswahl eines CurrentAnchor aus der Gruppe registrierter Kandidaten verwendet wird.
Erwartetes Verhalten
Wenn sich eine Layoutänderung auf die Größe/Position des Ankerelements auswirkt, sollte der Viewport automatisch verschoben werden, um die vorherige Position des Ankerelements relativ zum Viewport beizubehalten.
Bildlaufankerung (d. h. eine automatische Viewportverschiebung) gilt nicht immer. Dies sollte als Ergebnis auftreten, dass kandidatenbasierte Elemente der Struktur hinzugefügt oder aus der Struktur entfernt oder die Größe geändert werden. Andere Situationen, die einen Layoutdurchlauf auslösen können, aber nicht unbedingt dazu führen, dass automatische Viewportverschiebungen folgendes umfassen:
- Ein Benutzer, der den Inhalt verschiebt
- Programmgesteuertes Ändern der Ansicht durch einen Entwickler
- Behandeln eines BringIntoViewRequested-Ereignisses
Das Anchor-Element
Das implementierene Steuerelement sollte ein Ankerelement aus der Gruppe der zuvor registrierten Kandidaten auswählen und als CurrentAnchor festlegen.
Kandidatenankerelemente
Die Gruppe der Kandidatenankerelemente kann sich während einer der zuvor genannten Situationen ändern. Elemente werden als potenzielle Ankerkandidaten registriert, indem:
- festlegen der UIElement.CanBeScrollAnchor-Eigenschaft auf "true" oder
- Programmgesteuertes Registrieren des Elements mithilfe der RegisterAnchorCandidate-Methode .
Die CanBeScrollAnchor-Eigenschaft kann jederzeit festgelegt werden. Wenn festgelegt, ruft das Framework registerAnchorCandidateUnregisterAnchorCandidate/ implizit auf, aber nur für den ersten IScrollAnchorProvider, der in der Vorgängerkette dieses Elements gefunden wurde.
Das Framework registriert/hebt auch die Registrierung von Elementen bei CanBeScrollAnchor auf "true " fest, wenn sie der visuellen Livestruktur hinzugefügt oder daraus entfernt werden. Aber auch hier geschieht es nur mit dem ersten IScrollAnchorProvider, der in der Elementkette der Vorgänger gefunden wurde.
Ein Virtualisierungssteuerelement kann festlegen, dass der CanBeScrollAnchor automatisch für die generierten untergeordneten Elemente festgelegt wird.
ScrollViewer: Ein Beispiel
Das ScrollViewer-Steuerelement führt während seiner ArrangeOverride eine Bildlaufankerung durch. Es löst ein AnchorRequested-Ereignis am Anfang von ArrangeOverride aus, das Ihnen die Möglichkeit bietet, das Anchor-Element explizit anzugeben. Andernfalls wählt er einen Kandidaten im Viewport aus, der einem viewportrelativen Ankerpunkt am nächsten kommt, und legt dieses Element dann als CurrentAnchor fest.
Der Ankerpunkt stammt aus den Eigenschaften HorizontalAnchorRatio und VerticalAnchorRatio . Wenn die Verhältnisse null (Standard) sind, ist der Ankerpunkt die obere linke Ecke des Viewports (vorausgesetzt, die FlowDirection ist LeftToRight). Wenn die Verhältnisse beide auf 0,5 festgelegt sind, ist der Ankerpunkt die Mitte des Viewports. Ebenso ist der Ankerpunkt bei beiden Verhältnissen 1,0 die untere rechte Ecke des Viewports.
Sonderfall: Verankern am Rand
Der Anfang oder das Ende des bildlauffähigen Inhalts stellt ein spezielles Ankerszenario dar. Betrachten Sie beispielsweise das erwartete Verhalten, wenn ein Benutzer in einer E-Mail-Anwendung einen vertikalen Bildlauf nach unten in der Liste um einen bestimmten Betrag durchgeführt hat. Wenn eine neue Nachricht eingeht, wird sie am Anfang der Liste eingefügt (außerhalb der Inhaltsgrenzen, die der Benutzer derzeit sieht). Was der Benutzer derzeit sieht, sollte aufgrund der Ankunft einer neuen Nachricht am Anfang der Liste nicht plötzlich zu einer neuen Position springen. Wenn sich die aktuelle Bildlaufposition jedoch oben befindet, sollte der vorhandene Inhalt angezeigt werden, um Platz für die neue Nachricht zu schaffen.
Das umgekehrte Szenario ist eine Chaterfahrung. Wenn der Benutzer nach unten scrollt und eine neue Nachricht eingetroffen wird, sollte der Inhalt angezeigt werden, um Platz für die Anzeige der neuen Nachricht zu schaffen. Tatsächlich muss sich der Viewport nach unten verschieben, um das neue Ende des bildlauffähigen Inhalts nachzuverfolgen. Wenn der Benutzer nicht zum Anfang/Ende des Inhalts scrollt, sollte die Position des Viewports in Bezug auf einige sichtbare Inhalte, die als "interessant" betrachtet werden, synchronisiert bleiben (d. h. verankert).
ScrollViewer behandelt die Werte von 0,0 und 1,0 für die Eigenschaften HorizontalAnchorRatio und VerticalAnchorRatio mit besonderem Verhalten. Wenn der Wert 0,0 ist und der Benutzer zum Anfang scrollt, wird die Startposition anstelle eines Ankerkandidaten als Anker verwendet. Wenn sowohl der Wert 1,0 als auch der Benutzer am Ende scrollen, wird das Ende des Inhalts als Anker verwendet. Wenn die Position des Endes aufgrund von Größenänderungen wächst, wird das neue Ende verwendet.
Eigenschaften
| Name | Beschreibung |
|---|---|
| CurrentAnchor |
Das aktuell ausgewählte Ankerelement, das für die Bildlaufankerung verwendet werden soll. |
Methoden
| Name | Beschreibung |
|---|---|
| RegisterAnchorCandidate(UIElement) |
Registriert ein UIElement als potenzieller Bildlaufankerkandidat. |
| UnregisterAnchorCandidate(UIElement) |
Hebt die Registrierung eines UIElements als potenziellen Bildlaufankerkandidaten auf. |