Partager via


IScrollAnchorProvider Interface

Définition

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

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

Remarques

Ancrage du défilement

L’ancrage de défilement se produit lorsqu’un contrôle de défilement modifie 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’ancre de défilement applique un décalage après avoir observé une modification de la position d’un élément d’ancre dans le contenu.

Il incombe à l’implémentation du contrôle scroll de déterminer la stratégie qu’il utilisera pour choisir un CurrentAnchor à partir de l’ensemble de 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 de défilement (c’est-à-dire un décalage automatique de la fenêtre d’affichage) ne s’applique pas en tout temps. Cela doit se produire à la suite 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, incluent :

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

Élément Anchor

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

Éléments d’ancre candidats

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

  1. la définition de leur propriété UIElement.CanBeScrollAnchor sur true, ou
  2. inscription programmatique de l’élément à 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 la même façon, 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, une fois de plus, il n’est 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 le 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 anchor. Sinon, il choisit un candidat dans la fenêtre d’affichage qui est 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 à la fois 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 défilant représente un scénario d’ancre spécial. Par exemple, tenez compte du comportement attendu lorsqu’un utilisateur d’une application de messagerie a fait défiler verticalement la liste d’une certaine manière. Lorsqu’un nouveau message arrive, il est inséré en haut de la liste (en dehors des limites du contenu que l’utilisateur voit actuellement). Ce que l’utilisateur voit actuellement ne doit pas passer soudainement à 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 est en haut, le contenu existant doit apparaître vers le bas pour faire de la place 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 la place pour afficher le nouveau message. En réalité, ce qui se passe, c’est que la fenêtre d’affichage doit basculer vers le bas pour suivre la nouvelle fin du contenu défilant. Lorsque l’utilisateur ne fait pas défiler jusqu’au tout début/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 si 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