IScrollAnchorProvider Interfaccia

Definizione

Specifica un contratto per un controllo di scorrimento che supporta l'ancoraggio di scorrimento.

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
Derivato
Attributi

Commenti

Ancoraggio dello scorrimento

L'ancoraggio dello scorrimento è quando un controllo di scorrimento modifica automaticamente la posizione del suo riquadro di visualizzazione per impedire al contenuto di saltare in modo visibile. Il salto viene causato da una modifica del layout del contenuto. Il provider di ancoraggio di scorrimento applica un turno dopo aver osservato una modifica nella posizione di un elemento di ancoraggio all'interno del contenuto.

È responsabilità dell'implementazione del controllo di scorrimento per determinare quali criteri useranno nella scelta di un oggetto CurrentAnchor dal set di candidati registrati.

Comportamento previsto

Quando una modifica del layout influisce sulle dimensioni/posizione dell'elemento di ancoraggio, il riquadro di visualizzazione deve spostarsi automaticamente per mantenere la posizione precedente dell'elemento di ancoraggio rispetto al viewport.

L'ancoraggio dello scorrimento (ad esempio, uno spostamento automatico del riquadro di visualizzazione) non viene applicato in ogni momento. Dovrebbe verificarsi come risultato dell'aggiunta o della modifica delle dimensioni degli elementi candidati dall'albero o dalla modifica delle dimensioni. Altre situazioni che possono attivare un passaggio di layout, ma non causano necessariamente spostamenti automatici del riquadro di visualizzazione includono:

  • Panoramica del contenuto da parte di un utente
  • Uno sviluppatore che modifica a livello di codice la visualizzazione
  • Gestione di un evento BringIntoViewRequested

Elemento Anchor

Il controllo di implementazione deve scegliere un elemento di ancoraggio dal set di candidati registrati in precedenza e impostarlo come CurrentAnchor.

Elementi di ancoraggio candidati

Il set di elementi di ancoraggio candidato può cambiare durante una qualsiasi delle situazioni chiamate in precedenza. Gli elementi vengono registrati come potenziali candidati di ancoraggio da:

  1. impostazione della proprietà UIElement.CanBeScrollAnchorsu true o
  2. registrazione a livello di codice dell'elemento usando il metodo RegisterAnchorCandidate .

La proprietà CanBeScrollAnchor può essere impostata in qualsiasi momento. Se impostato, il framework chiama implicitamente RegisterAnchorCandidateUnregisterAnchorCandidate/, ma solo sul primo IScrollAnchorProvider trovato nella catena di predecessori di tale elemento.

Il framework registra in modo analogo/annulla la registrazione degli elementi con CanBeScrollAnchor impostato su true quando vengono aggiunti o rimossi dall'albero visivo live. Ma, ancora una volta, viene fatto solo con il primo IScrollAnchorProvider trovato nella catena di predecessori dell'elemento.

Un controllo di virtualizzazione può scegliere di impostare automaticamente canBeScrollAnchor sugli elementi figlio generati.

ScrollViewer: esempio

Il controllo ScrollViewer esegue l'ancoraggio dello scorrimento durante il relativo ArrangeOverride. Genera un evento AnchorRequested all'inizio di ArrangeOverride, che consente di specificare in modo esplicito l'elemento di ancoraggio. In caso contrario, sceglie un candidato nel viewport più vicino a un punto di ancoraggio relativo al viewport e quindi imposta tale elemento come CurrentAnchor.

Il punto di ancoraggio proviene dalle proprietà HorizontalAnchorRatio e VerticalAnchorRatio . Quando i rapporti sono zero (impostazione predefinita), il punto di ancoraggio è l'angolo superiore sinistro del riquadro di visualizzazione (presupponendo che FlowDirection sia LeftToRight). Se i rapporti sono entrambi impostati su 0,5, il punto di ancoraggio è il centro del riquadro di visualizzazione. Analogamente, quando i rapporti sono entrambi 1,0, il punto di ancoraggio è l'angolo inferiore destro del riquadro di visualizzazione.

Caso speciale: ancoraggio sul bordo

L'inizio o la fine del contenuto scorrevole rappresenta uno scenario di ancoraggio speciale. Si consideri, ad esempio, il comportamento previsto quando un utente in un'applicazione di posta elettronica ha scorrere verticalmente verso il basso l'elenco in base a qualche importo. Quando viene inserito un nuovo messaggio nella parte superiore dell'elenco (all'esterno dei limiti del contenuto attualmente visualizzato dall'utente). Ciò che l'utente attualmente vede non dovrebbe passare improvvisamente a una nuova posizione a causa dell'arrivo di un nuovo messaggio nella parte superiore dell'elenco. Tuttavia, se la posizione di scorrimento corrente è in alto, il contenuto esistente dovrebbe essere spostato verso il basso per rendere disponibile il nuovo messaggio.

Lo scenario inverso è un'esperienza di chat. Quando l'utente viene scorrevole verso il basso e viene visualizzato un nuovo messaggio, il contenuto dovrebbe essere spostato in alto per visualizzare il nuovo messaggio. In realtà, ciò che accade è che il viewport deve spostarsi verso il basso per tenere traccia della nuova fine del contenuto scorrevole. Quando l'utente non viene eseguito lo scorrimento fino alla fine/inizio del contenuto, la posizione del riquadro di visualizzazione rispetto a un contenuto visibile considerato "interessante" deve rimanere sincronizzato (ad esempio ancorato).

ScrollViewer tratta i valori di 0.0 e 1.0 per le proprietà HorizontalAnchorRatio e VerticalAnchorRatio con un comportamento speciale. Se entrambi il valore è 0,0 e l'utente viene scorrevole fino all'inizio, la posizione iniziale viene usata come ancoraggio anziché come candidato di ancoraggio. Analogamente, se entrambi i valori sono 1.0 e l'utente viene scorrevole fino alla fine, la fine del contenuto viene usata come ancoraggio. Se la posizione dell'estremità aumenta a causa delle modifiche alle dimensioni, viene usata la nuova fine.

Proprietà

CurrentAnchor

Elemento di ancoraggio attualmente scelto da usare per l'ancoraggio di scorrimento.

Metodi

RegisterAnchorCandidate(UIElement)

Registra un uiElement come potenziale candidato di ancoraggio di scorrimento.

UnregisterAnchorCandidate(UIElement)

Annulla la registrazione di un oggetto UIElement come potenziale candidato di ancoraggio di scorrimento.

Si applica a

Vedi anche