IScrollAnchorProvider Schnittstelle

Definition

Gibt einen Vertrag für ein Scrollsteuerelement an, das die Bildlaufankerung unterstützt.

public interface class IScrollAnchorProvider
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 458752)]
/// [Windows.Foundation.Metadata.Guid(1793694223, 18316, 21568, 178, 198, 234, 212, 55, 142, 248, 228)]
struct IScrollAnchorProvider
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 458752)]
[Windows.Foundation.Metadata.Guid(1793694223, 18316, 21568, 178, 198, 234, 212, 55, 142, 248, 228)]
public interface IScrollAnchorProvider
Public Interface IScrollAnchorProvider
Abgeleitet
Attribute

Windows-Anforderungen

Gerätefamilie
Windows 10, version 1809 (eingeführt in 10.0.17763.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v7.0)

Hinweise

Scrollverankerung

Scroll anchoring ist, wenn ein Scrollsteuerelement automatisch die Position seines Viewports ändert, um zu verhindern, dass der Inhalt sichtbar springt. Der Sprung wird durch eine Änderung des Inhaltslayouts verursacht. Der Bildlaufankeranbieter wendet eine Verschiebung an, nachdem eine Änderung der Position eines Ankerelements im Inhalt beobachtet wurde.

Es liegt in der Verantwortung des implementierenden Scrollsteuerelements zu bestimmen, welche Richtlinie bei der Auswahl eines CurrentAnchor aus der Gruppe der registrierten 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.

Scroll Anchoring (d. h. eine automatische Viewportverschiebung) gilt nicht jederzeit. Dies sollte das Ergebnis sein, dass kandidatenfähige Elemente der Struktur hinzugefügt oder aus dieser entfernt werden oder sich die Größe ändert. Andere Situationen, die möglicherweise einen Layoutdurchlauf auslösen, aber nicht notwendigerweise zu automatischen Viewportverschiebungen führen, sind:

Das Anchor-Element

Das implementierenden Steuerelement sollte ein Ankerelement aus der Gruppe der zuvor registrierten Kandidaten auswählen und als CurrentAnchor festlegen.

Kandidatenankerelemente

Die Gruppe der Kandidatenankerelemente kann sich in einer der zuvor genannten Situationen ändern. Elemente werden als potenzielle Ankerkandidaten registriert:

  1. festlegen der UIElement.CanBeScrollAnchor-Eigenschaft auf true, oder
  2. programmgesteuerte Registrierung des Elements mithilfe der RegisterAnchorCandidate-Methode .

Die CanBeScrollAnchor-Eigenschaft kann jederzeit festgelegt werden. Wenn festgelegt, ruft das Framework registerAnchorCandidate/UnregisterAnchorCandidate implizit auf, jedoch nur für den ersten IScrollAnchorProvider, der in der Kette von Vorgängern dieses Elements gefunden wurde.

Das Framework registriert bzw. hebt die Registrierung von Elementen auf, wobei CanBeScrollAnchor auf true festgelegt ist, wenn sie der visuellen Livestruktur hinzugefügt oder entfernt werden. Aber auch hier geschieht dies nur mit dem ersten IScrollAnchorProvider, der in der Vorgängerkette des Elements gefunden wurde.

Ein Virtualisierungssteuerelement kann das CanBeScrollAnchor-Element automatisch für die generierten untergeordneten Elemente festlegen.

ScrollViewer: Ein Beispiel

Das ScrollViewer-Steuerelement führt während des ArrangeOverride-Steuerelements scroll Anchoring aus. Es löst am Anfang von ArrangeOverride ein AnchorRequested-Ereignis aus, das Ihnen die Möglichkeit bietet, das Ankerelement explizit anzugeben. Andernfalls wählt er einen Kandidaten im Viewport aus, der einem relativen Viewport-Ankerpunkt am nächsten ist, und legt dieses Element dann als CurrentAnchor fest.

Der Ankerpunkt stammt aus den Eigenschaften HorizontalAnchorRatio und VerticalAnchorRatio . Wenn die Verhältnisse 0 (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. Wenn die Verhältnisse beide 1,0 sind, ist der Ankerpunkt die untere rechte Ecke des Viewports.

Spezialfall: Verankerung am Rand

Der Anfang oder das Ende des bildlaufbaren Inhalts stellt ein spezielles Ankerszenario dar. Betrachten Sie beispielsweise das erwartete Verhalten, wenn ein Benutzer in einer E-Mail-Anwendung vertikal nach unten in der Liste scrollt. Wenn eine neue Nachricht eingeht, wird sie am Anfang der Liste eingefügt (außerhalb der Grenzen des Inhalts, den der Benutzer derzeit sieht). Was der Benutzer derzeit sieht, sollte aufgrund des Eintreffens einer neuen Nachricht am Anfang der Liste nicht plötzlich an eine neue Position springen. Wenn sich die aktuelle Bildlaufposition jedoch oben befindet, sollte der vorhandene Inhalt nach unten verschoben werden, um Platz für die neue Nachricht zu schaffen.

Das umgekehrte Szenario ist eine Chaterfahrung. Wenn der Benutzer ganz nach unten scrollt und eine neue Nachricht eingeht, sollte der Inhalt nach oben verschoben werden, um Platz für die Anzeige der neuen Nachricht zu schaffen. In Der Realität muss der Viewport nach unten verschoben werden, um das neue Ende des scrollbaren Inhalts nachzuverfolgen. Wenn der Benutzer nicht bis zum Anfang/Ende des Inhalts scrollt, sollte die Position des Viewports in Bezug auf einige sichtbare Inhalte, die als "interessant" gelten, synchron (d. h. verankert) bleiben.

ScrollViewer behandelt die Werte 0.0 und 1.0 für die Eigenschaften HorizontalAnchorRatio und VerticalAnchorRatio mit besonderem Verhalten. Wenn sowohl der Wert 0,0 ist und der Benutzer zum Start scrollt, wird die Startposition als Anker anstelle eines Ankerkandidaten verwendet. Wenn der Wert 1,0 ist und der Benutzer bis zum Ende scrollt, wird das Ende des Inhalts als Anker verwendet. Wenn die Position des Endes aufgrund von Größenänderungen zunimmt, wird das neue Ende verwendet.

Eigenschaften

CurrentAnchor

Das aktuell ausgewählte Ankerelement, das für die Bildlaufankerung verwendet werden soll.

Methoden

RegisterAnchorCandidate(UIElement)

Registriert ein UIElement als potenzieller Scrollankerkandidat.

UnregisterAnchorCandidate(UIElement)

Hebt die Registrierung eines UIElements als potenziellen Scrollankerkandidaten auf.

Gilt für:

Weitere Informationen