Langage

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 de défilement

L’ancrage de défilement est 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’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 lors du choix d’un CurrentAnchor à partir de l’ensemble de candidats inscrits.

Comportement attendu

Lorsqu’une modification de disposition a un impact sur la taille/position de l’élément d’ancrage, la fenêtre d’affichage doit être automatiquement décalée pour maintenir 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 à tout moment. Il doit se produire suite à l’ajout ou à la suppression d’éléments candidats de l’arborescence ou à la modification de la taille. D’autres situations qui peuvent déclencher une passe de disposition, mais qui n’entraînent pas nécessairement des décalages de fenêtre d’affichage automatique incluent :

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

Élément Anchor

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

Éléments d’ancre candidate

L’ensemble d’éléments d’ancrage candidats peut changer pendant l’une des situations appelées précédemment. Les éléments sont inscrits en tant que candidats d’ancrage potentiels par :

  1. définition de la 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. Quand 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 , car ils sont ajoutés ou supprimés de l’arborescence visuelle dynamique. Mais, encore une fois, il n’est fait que 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, qui vous offre la possibilité de spécifier explicitement l’élément d’ancrage. 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 zéro (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 deux 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’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 façon. 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 se trouve en haut, le contenu existant doit apparaître pour faire place au 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 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 début/à 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 de 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 des modifications de taille, la nouvelle fin est utilisée.

Propriétés

Nom Description
CurrentAnchor

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

Méthodes

Nom Description
RegisterAnchorCandidate(UIElement)

Inscrit un UIElement comme 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