IScrollAnchorProvider Antarmuka
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan kontrak untuk kontrol pengguliran yang mendukung penjangkaran gulir.
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
- Turunan
- Atribut
Keterangan
Gulir Penahanan
Gulir penahanan adalah ketika kontrol gulir secara otomatis mengubah posisi viewport-nya untuk mencegah konten melompat dengan jelas. Lompatan disebabkan oleh perubahan tata letak konten. Penyedia jangkar gulir menerapkan pergeseran setelah mengamati perubahan posisi elemen jangkar dalam konten.
Ini adalah tanggung jawab dari menerapkan kontrol gulir untuk menentukan kebijakan apa yang akan digunakannya dalam memilih CurrentAnchor dari set kandidat terdaftar.
Perilaku yang Diharapkan
Ketika perubahan tata letak berdampak pada ukuran/posisi elemen jangkar, viewport harus secara otomatis bergeser untuk mempertahankan posisi sebelumnya dari elemen jangkar relatif terhadap viewport.
Gulir penahanan (yaitu pergeseran viewport otomatis) tidak berlaku setiap saat. Ini harus terjadi sebagai akibat dari elemen kandidat ditambahkan ke atau dihapus dari pohon atau berubah ukuran. Situasi lain yang dapat memicu tata letak, tetapi tidak selalu menyebabkan pergeseran viewport otomatis akan mencakup:
- Pengguna yang menggeser konten
- Pengembang secara terprogram mengubah tampilan
- Menangani peristiwa BringIntoViewRequested
Elemen Jangkar
Kontrol penerapan harus memilih elemen jangkar dari set kandidat yang terdaftar sebelumnya dan menetapkannya sebagai CurrentAnchor-nya.
Elemen Jangkar Kandidat
Kumpulan elemen jangkar kandidat dapat berubah selama salah satu situasi yang dipanggil sebelumnya. Elemen terdaftar sebagai kandidat jangkar potensial dengan:
- mengatur properti UIElement.CanBeScrollAnchor mereka ke true, atau
- mendaftarkan elemen secara terprogram menggunakan metode RegisterAnchorCandidate .
Properti CanBeScrollAnchor dapat diatur kapan saja. Ketika diatur, kerangka kerja secara implisit memanggil RegisterAnchorCandidate/UnregisterAnchorCandidate, tetapi hanya pada IScrollAnchorProvider pertama yang ditemukan dalam rantai leluhur elemen tersebut.
Kerangka kerja ini juga mendaftarkan/membatalkan pendaftaran elemen dengan CanBeScrollAnchor diatur ke true saat ditambahkan atau dihapus dari pohon visual langsung. Tapi, sekali lagi, itu hanya dilakukan dengan IScrollAnchorProvider pertama yang ditemukan dalam rantai leluhur elemen.
Kontrol virtualisasi dapat memilih untuk secara otomatis mengatur CanBeScrollAnchor pada elemen anak yang dihasilkan.
ScrollViewer: Contoh
Kontrol ScrollViewer melakukan penahanan gulir selama ArrangeOverride. Ini menimbulkan peristiwa AnchorRequested di awal ArrangeOverride, yang memberi Anda kesempatan untuk secara eksplisit menentukan elemen jangkar. Jika tidak, ia memilih kandidat di viewport yang paling dekat dengan titik jangkar viewport-relative dan kemudian menetapkan elemen tersebut sebagai CurrentAnchor-nya.
Titik jangkar berasal dari properti HorizontalAnchorRatio dan VerticalAnchorRatio . Ketika rasio nol (default), titik jangkar adalah sudut kiri atas viewport (dengan asumsi FlowDirection adalah LeftToRight). Jika rasio keduanya diatur ke 0,5 maka titik jangkar adalah pusat viewport. Demikian pula, ketika rasio keduanya adalah 1,0 maka titik jangkar adalah sudut kanan bawah viewport.
Kasus Khusus: Penahanan di tepi
Awal atau akhir konten yang dapat digulir mewakili skenario jangkar khusus. Misalnya, pertimbangkan perilaku yang diharapkan ketika pengguna dalam aplikasi email telah secara vertikal menggulir ke bawah daftar dengan beberapa jumlah. Ketika pesan baru tiba, pesan disisipkan di bagian atas daftar (di luar batas konten yang saat ini dilihat pengguna). Apa yang dilihat pengguna saat ini seharusnya tidak tiba-tiba melompat ke posisi baru karena kedatangan pesan baru di bagian atas daftar. Namun, jika posisi gulir mereka saat ini berada di bagian atas, maka konten yang ada akan tampak bergeser ke bawah untuk memberi ruang bagi pesan baru.
Skenario terbalik adalah pengalaman obrolan. Ketika pengguna digulir ke bagian paling bawah dan pesan baru tiba, konten akan tampak bergeser ke atas untuk memberi ruang untuk menampilkan pesan baru. Pada kenyataannya, yang terjadi adalah bahwa viewport perlu bergeser ke bawah untuk melacak akhir baru konten yang dapat digulirkan. Ketika pengguna tidak digulir ke awal/akhir konten, maka posisi viewport sehubungan dengan beberapa konten yang terlihat yang dianggap "menarik" harus tetap sinkron (yaitu berlabuh).
ScrollViewer memperlakukan nilai 0,0 dan 1,0 untuk properti HorizontalAnchorRatio dan VerticalAnchorRatio dengan perilaku khusus. Jika nilainya adalah 0,0 dan pengguna digulir ke awal, maka posisi mulai digunakan sebagai jangkar alih-alih kandidat jangkar. Demikian pula, jika nilainya adalah 1,0 dan pengguna digulir ke akhir, maka akhir konten digunakan sebagai jangkar. Jika posisi akhir tumbuh karena perubahan ukuran maka akhir baru digunakan.
Properti
CurrentAnchor |
Elemen jangkar yang saat ini dipilih untuk digunakan untuk penjangkaran gulir. |
Metode
RegisterAnchorCandidate(UIElement) |
Mendaftarkan UIElement sebagai kandidat jangkar gulir potensial. |
UnregisterAnchorCandidate(UIElement) |
Membatalkan pendaftaran UIElement sebagai kandidat jangkar gulir potensial. |