Share via


IScrollAnchorProvider Schnittstelle

Definition

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

Scrollverankerung

Die Bildlaufankerung erfolgt, wenn ein Bildlaufsteuerelement 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 innerhalb des Inhalts beobachtet wurde.

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

Die Scrollverankerung (d. h. eine automatische Viewportverschiebung) gilt nicht immer. Dies sollte darauf erfolgen, dass kandidatenfähige Elemente der Struktur hinzugefügt oder daraus entfernt werden oder sich die Größe ändert. Andere Situationen, die möglicherweise einen Layoutdurchlauf auslösen, aber nicht notwendigerweise automatische Viewportverschiebungen verursachen, sind:

Das Anchor-Element

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

Candidate Anchor-Elemente

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

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

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

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

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

ScrollViewer: Ein Beispiel

Das ScrollViewer-Steuerelement führt die Bildlaufankerung während seiner ArrangeOverride 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 viewportrelativen 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, 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 rechte untere Ecke des Viewports.

Spezialfall: Verankern 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 einen vertikalen Bildlauf nach unten in der Liste 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 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 Wirklichkeit muss der Viewport nach unten verschoben werden, um das neue Ende des bildlauffähigen 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" angesehen werden, synchron 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 Start scrollt, wird die Startposition als Anker anstelle eines Ankerkandidaten verwendet. Wenn sowohl der Wert 1,0 ist als auch der Benutzer bis zum Ende gescrollt wird, 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 derzeit 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 potenzieller Scrollankerkandidat auf.

Gilt für:

Weitere Informationen