IScrollAnchorProvider Interfaccia
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 a scorrimento
L'ancoraggio di scorrimento si verifica quando un controllo di scorrimento modifica automaticamente la posizione del relativo 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 quale criterio userà per scegliere un oggetto 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 riquadro di visualizzazione.
L'ancoraggio di scorrimento (ad esempio uno spostamento automatico del riquadro di visualizzazione) non viene applicato 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 una qualsiasi delle situazioni evidenziate in precedenza. Gli elementi vengono registrati come potenziali candidati di ancoraggio da:
- impostazione della proprietà UIElement.CanBeScrollAnchor su true o
- registrazione dell'elemento a livello di codice tramite 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 uno scorrimento verticale verso il basso dell'elenco di alcuni importi. Quando arriva un nuovo messaggio, viene inserito nella parte superiore 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 liberare spazio per il nuovo messaggio.
Lo scenario inverso è un'esperienza di chat. Quando l'utente viene eseguito lo scorrimento verso il basso e un nuovo messaggio arriva, il contenuto dovrebbe essere spostato verso l'alto per fare spazio 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 ad alcuni contenuti visibili considerati "interessanti" deve rimanere sincronizzata (ad esempio ancorata).
ScrollViewer considera i valori di 0,0 e 1.0 per le proprietà HorizontalAnchorRatio e VerticalAnchorRatio con un comportamento speciale. Se il valore è 0,0 e l'utente viene spostato fino all'inizio, la posizione iniziale viene usata come ancoraggio anziché come candidato di ancoraggio. Analogamente, se il valore è 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 delle dimensioni, viene usata la nuova estremità.
Proprietà
| Nome | Descrizione |
|---|---|
| CurrentAnchor |
Elemento di ancoraggio attualmente scelto da utilizzare per l'ancoraggio di scorrimento. |
Metodi
| Nome | Descrizione |
|---|---|
| RegisterAnchorCandidate(UIElement) |
Registra un UIElement come potenziale candidato di ancoraggio a scorrimento. |
| UnregisterAnchorCandidate(UIElement) |
Annulla la registrazione di un uiElement come potenziale candidato di ancoraggio di scorrimento. |