Condividi tramite


IScrollAnchorProvider Interfaccia

Definizione

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

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

Requisiti Windows

Famiglia di dispositivi
Windows 10, version 1809 (è stato introdotto in 10.0.17763.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v7.0)

Commenti

Ancoraggio dello scorrimento

L'ancoraggio dello scorrimento è quando un controllo di scorrimento modifica automaticamente la posizione del riquadro di visualizzazione per impedire che il contenuto salti visibilmente. Il passaggio è causato da una modifica del layout del contenuto. Il provider di ancoraggi di scorrimento applica uno spostamento dopo aver osservato una modifica nella posizione di un elemento di ancoraggio all'interno del contenuto.

È responsabilità dell'implementazione del controllo di scorrimento determinare i criteri che userà nella scelta di currentAnchor dal set di candidati registrati.

Comportamento previsto

Quando una modifica del layout influisce sulla dimensione/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 di scorrimento (ad esempio, uno spostamento automatico del riquadro di visualizzazione) non si applica affatto. Dovrebbe verificarsi in seguito all'aggiunta o alla rimozione di elementi candidati dall'albero o dalla modifica delle dimensioni. Altre situazioni che possono attivare un passaggio di layout, ma non necessariamente causano spostamenti automatici del riquadro di visualizzazione includono:

  • Panoramica del contenuto da parte di un utente
  • Uno sviluppatore che modifica la visualizzazione a livello di codice
  • 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 qualsiasi situazione evidenziata in precedenza. Gli elementi vengono registrati come potenziali candidati di ancoraggio da:

  1. impostazione della proprietà UIElement.CanBeScrollAnchor su 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 in modo implicito RegisterAnchorCandidate/UnregisterAnchorCandidate, ma solo sul primo IScrollAnchorProvider trovato nella catena di predecessori di tale elemento.

Il framework registra o annulla la registrazione degli elementi con CanBeScrollAnchor impostato su true man mano che vengono aggiunti o rimossi dalla struttura ad albero visuale attiva. 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 la proprietà 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 riquadro di visualizzazione 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 al 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 eseguito lo scorrimento verticale verso il basso dell'elenco di alcuni importi. Quando arriva un nuovo messaggio, viene inserito all'inizio dell'elenco (al di fuori dei limiti del contenuto attualmente visualizzato dall'utente). Ciò che l'utente attualmente vede non dovrebbe improvvisamente passare a una nuova posizione a causa dell'arrivo di un nuovo messaggio nella parte superiore dell'elenco. Tuttavia, se la posizione di scorrimento corrente si trova nella parte superiore, il contenuto esistente dovrebbe sembrare spostarsi verso il basso per fare spazio al nuovo messaggio.

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

ScrollViewer considera i valori 0.0 e 1.0 per le proprietà HorizontalAnchorRatio e VerticalAnchorRatio con un comportamento speciale. Se entrambi i valori sono 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 di modifiche alle dimensioni, viene usata la nuova estremità.

Proprietà

CurrentAnchor

Elemento di ancoraggio attualmente scelto da utilizzare per l'ancoraggio dello scorrimento.

Metodi

RegisterAnchorCandidate(UIElement)

Registra un UIElement come potenziale candidato per l'ancoraggio di scorrimento.

UnregisterAnchorCandidate(UIElement)

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

Si applica a

Vedi anche