IScrollAnchorProvider Interface

Définition

Spécifie un contrat pour un contrôle de défilement qui prend en charge l’ancrage par défilement.

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
Dérivé
Attributs

Configuration requise pour Windows

Famille d’appareils
Windows 10, version 1809 (introduit dans 10.0.17763.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v7.0)

Remarques

Ancrage du défilement

L’ancrage par défilement se produit lorsqu’un contrôle de défilement change automatiquement la position de sa fenêtre d’affichage pour empêcher le contenu de sauter visiblement. Le saut est dû à une modification de la disposition du contenu. Le fournisseur d’ancres de défilement applique un décalage après avoir observé une modification de la position d’un élément d’ancrage dans le contenu.

Il incombe au contrôle de défilement d’implémentation de déterminer la stratégie qu’il utilisera pour choisir un CurrentAnchor parmi l’ensemble des candidats inscrits.

Comportement attendu

Lorsqu’un changement de disposition a un impact sur la taille/position de l’élément d’ancrage, la fenêtre d’affichage doit automatiquement changer pour conserver la position précédente de l’élément d’ancrage par rapport à la fenêtre d’affichage.

L’ancrage par défilement (c’est-à-dire un décalage automatique de la fenêtre d’affichage) ne s’applique pas en permanence. Cela doit se produire en raison de l’ajout ou de la suppression d’éléments candidats dans l’arborescence ou d’un changement de taille. D’autres situations qui peuvent déclencher une passe de disposition, mais qui ne provoquent pas nécessairement des décalages automatiques de la fenêtre d’affichage sont les suivantes :

  • Un utilisateur qui effectue un panoramique du contenu
  • Un développeur modifiant la vue par programmation
  • Gestion d’un événement BringIntoViewRequested

Élément Anchor

Le contrôle d’implémentation doit choisir un élément d’ancrage à partir de l’ensemble de candidats précédemment inscrits et le définir comme currentAnchor.

Éléments d’ancrage candidats

L’ensemble des éléments d’ancre candidats peut changer au cours de l’une des situations précédentes. Les éléments sont inscrits en tant que candidats d’ancrage potentiels par :

  1. définition de leur propriété UIElement.CanBeScrollAnchor sur true, ou
  2. inscription de l’élément par programmation à l’aide de la méthode RegisterAnchorCandidate .

La propriété CanBeScrollAnchor peut être définie à tout moment. Lorsqu’elle est définie, l’infrastructure appelle implicitement RegisterAnchorCandidate/UnregisterAnchorCandidate, mais uniquement sur le premier IScrollAnchorProvider trouvé dans la chaîne d’ancêtres de cet élément.

De même, l’infrastructure inscrit/annule l’inscription des éléments avec CanBeScrollAnchor défini sur true à mesure qu’ils sont ajoutés ou supprimés de l’arborescence visuelle dynamique. Mais, encore une fois, cela ne se fait qu’avec le premier IScrollAnchorProvider trouvé dans la chaîne d’ancêtres de l’élément.

Un contrôle de virtualisation peut choisir de définir automatiquement canBeScrollAnchor sur ses éléments enfants générés.

ScrollViewer : exemple

Le contrôle ScrollViewer effectue l’ancrage de défilement pendant son ArrangeOverride. Il déclenche un événement AnchorRequested au début de ArrangeOverride, ce qui vous permet de spécifier explicitement l’élément d’ancre. Sinon, il choisit un candidat dans la fenêtre d’affichage le plus proche d’un point d’ancrage relatif à la fenêtre d’affichage, puis définit cet élément comme son CurrentAnchor.

Le point d’ancrage provient des propriétés HorizontalAnchorRatio et VerticalAnchorRatio . Lorsque les ratios sont nuls (valeur par défaut), le point d’ancrage est le coin supérieur gauche de la fenêtre d’affichage (en supposant que FlowDirection est LeftToRight). Si les ratios sont tous deux définis sur 0,5, le point d’ancrage est le centre de la fenêtre d’affichage. De même, lorsque les ratios sont tous les deux de 1,0, le point d’ancrage est le coin inférieur droit de la fenêtre d’affichage.

Cas spécial : Ancrage au bord

Le début ou la fin du contenu pouvant faire défiler représente un scénario d’ancrage spécial. Par exemple, considérez le comportement attendu lorsqu’un utilisateur d’une application de messagerie a fait défiler verticalement la liste d’une certaine quantité. Lorsqu’un nouveau message arrive, il est inséré en haut de la liste (en dehors des limites de contenu que l’utilisateur voit actuellement). Ce que l’utilisateur voit actuellement ne doit pas soudainement passer à une nouvelle position en raison de l’arrivée d’un nouveau message en haut de la liste. Toutefois, si leur position de défilement actuelle se trouve en haut, le contenu existant doit apparaître vers le bas pour faire de l’espace pour le nouveau message.

Le scénario inverse est une expérience de conversation. Lorsque l’utilisateur fait défiler vers le bas et qu’un nouveau message arrive, le contenu doit apparaître pour faire de l’espace pour afficher le nouveau message. En réalité, ce qui se passe est que la fenêtre d’affichage doit être déplacée vers le bas pour suivre la nouvelle fin du contenu pouvant faire défiler. Lorsque l’utilisateur ne fait pas défiler jusqu’au début ou à la fin du contenu, la position de la fenêtre d’affichage par rapport à un contenu visible considéré comme « intéressant » doit rester synchronisée (c’est-à-dire ancrée).

ScrollViewer traite les valeurs 0.0 et 1.0 pour les propriétés HorizontalAnchorRatio et VerticalAnchorRatio avec un comportement spécial. Si la valeur est 0,0 et que l’utilisateur fait défiler jusqu’au début, la position de début est utilisée comme ancre au lieu d’un candidat d’ancre. De même, si la valeur est 1.0 et que l’utilisateur fait défiler jusqu’à la fin, la fin du contenu est utilisée comme ancre. Si la position de la fin augmente en raison de changements de taille, la nouvelle extrémité est utilisée.

Propriétés

CurrentAnchor

Élément d’ancre actuellement choisi à utiliser pour l’ancrage par défilement.

Méthodes

RegisterAnchorCandidate(UIElement)

Inscrit un UIElement en tant que candidat d’ancre de défilement potentiel.

UnregisterAnchorCandidate(UIElement)

Annule l’inscription d’un UIElement en tant que candidat d’ancre de défilement potentiel.

S’applique à

Voir aussi