Ringkasan Bab 25. Varietas halaman
Catatan
Buku ini diterbitkan pada musim semi 2016, dan belum diperbarui sejak saat itu. Ada banyak dalam buku yang tetap berharga, tetapi beberapa materi sudah kedaluarsa, dan beberapa topik tidak lagi sepenuhnya benar atau lengkap.
Sejauh ini Anda telah melihat dua kelas yang berasal dari Page
: ContentPage
dan NavigationPage
. Bab ini menyajikan dua orang lainnya:
MasterDetailPage
mengelola dua halaman, master, dan detailTabbedPage
mengelola beberapa halaman anak yang diakses melalui tab
Jenis halaman ini menyediakan opsi navigasi yang lebih canggih daripada yang NavagationPage
dibahas dalam Bab 24. Navigasi Halaman.
Master dan Detail
MasterDetailPage
menentukan dua properti jenis Page
: Master
dan Detail
. Umumnya Anda mengatur masing-masing properti ini ke ContentPage
. Tampilan MasterDetailPage
dan sakelar di antara kedua halaman ini.
Ada dua cara mendasar untuk beralih di antara kedua halaman ini:
- pisahkan di mana master dan detail berdampingan
- popover di mana halaman detail mencakup atau sebagian mencakup halaman master
Ada beberapa variasi pendekatan popover (slide, tumpang tindih, dan pertukaran), tetapi ini umumnya tergantung platform. Anda dapat mengatur MasterDetailBehavior
properti ke MasterDetailPage
anggota MasterBehavior
enumerasi:
Namun, properti ini tidak berpengaruh pada ponsel. Telepon selalu memiliki perilaku popover. Hanya tablet dan jendela desktop yang dapat memiliki perilaku terpisah.
Menjelajahi Perilaku
Sampel MasterDetailBehaviors memungkinkan Anda untuk bereksperimen dengan perilaku default pada perangkat yang berbeda. Program ini berisi dua turunan terpisah ContentPage
untuk master dan detail (dengan properti yang Title
ditetapkan pada keduanya), dan kelas lain yang berasal dari MasterDetailPage
yang menggabungkannya. Halaman detail diapit dalam NavigationPage
karena program UWP tidak akan berfungsi tanpanya.
Platform Windows 8.1 dan Windows Telepon 8.1 mengharuskan bitmap diatur ke Icon
properti halaman master.
Kembali ke Sekolah
Sampel SchoolAndDetail mengambil pendekatan yang agak berbeda untuk membangun program untuk menampilkan siswa dari pustaka SchoolOfFineArt.
Properti Master
dan Detail
didefinisikan dengan pohon visual dalam file SchoolAndDetailPage.xaml , yang berasal dari MasterDetailPage
. Pengaturan ini memungkinkan pengikatan data diatur antara halaman master dan detail.
File XAML itu IsPresented
juga mengatur properti ke MasterDetailPage
True
. Ini menyebabkan halaman master ditampilkan saat startup; secara default halaman detail ditampilkan. File SchoolAndDetailPage.xaml.cs diatur IsPresented
ke false
saat item dipilih dari ListView
halaman master. Halaman detail kemudian ditampilkan:
Antarmuka pengguna Anda sendiri
Meskipun Xamarin.Forms menyediakan antarmuka pengguna untuk beralih antara tampilan master dan detail, Anda dapat menyediakannya sendiri. Untuk melakukannya:
- Atur properti ke
IsGestureEnabled
false
untuk menonaktifkan penggeseran - Ambil alih
ShouldShowToolbarButton
metode dan kembalifalse
untuk menyembunyikan tombol toolbar pada Windows 8.1 dan Windows Telepon 8.1.
Anda kemudian harus menyediakan sarana untuk beralih antara halaman master dan detail, seperti yang ditunjukkan oleh sampel ColorsDetail.
Sampel MasterDetailTaps menunjukkan pendekatan lain menggunakan TapGestureRecognizer
pada halaman master dan detail.
TabbedPage
TabbedPage
adalah kumpulan halaman yang dapat Anda alihkan di antara menggunakan tab. Ini berasal dari MultiPage<Page>
dan mendefinisikan tidak ada properti publik atau metodenya sendiri. MultiPage<T>
, namun, menentukan properti:
Children
properti jenisIList<T>
Anda mengisi koleksi ini Children
dengan objek halaman.
Pendekatan lain memungkinkan Anda untuk menentukan TabbedPage
anak-anak seperti ListView
menggunakan dua properti ini yang menghasilkan halaman bertab secara otomatis:
ItemsSource
dari jenisIEnumerable
ItemTemplate
dari jenisDataTemplate
Namun, pendekatan ini tidak berfungsi dengan baik di iOS ketika koleksi berisi lebih dari beberapa item.
MultiPage<T>
menentukan dua properti lagi yang memungkinkan Anda melacak halaman mana yang saat ini dilihat:
CurrentPage
jenisT
, merujuk ke halamanSelectedItem
jenisObject
, mengacu pada objek dalamItemsSource
koleksi
MultiPage<T>
juga mendefinisikan dua peristiwa:
PagesChanged
ItemsSource
ketika koleksi berubahCurrentPageChanged
saat halaman yang ditampilkan berubah
Halaman tab diskrit
Sampel DiscreteTabbedColors terdiri dari tiga halaman bertab yang menampilkan warna dengan tiga cara berbeda. Setiap tab adalah ContentPage
turunan, dan kemudian TabbedPage
DiscreteTabbedColorsPage.xaml turunan menggabungkan tiga halaman.
Untuk setiap halaman yang muncul di TabbedPage
, Title
properti diperlukan untuk menentukan teks di tab, dan Apple Store juga mengharuskan ikon digunakan, sehingga Icon
properti diatur untuk iOS:
Sampel StudentNotes memiliki beranda yang mencantumkan semua siswa. Ketika siswa diketuk, ini menavigasi ke TabbedPage
turunan, StudentNotesDataPage
, yang menggabungkan tiga ContentPage
objek di pohon visualnya, salah satunya memungkinkan memasukkan beberapa catatan untuk siswa tersebut.
Menggunakan ItemTemplate
Sampel MultiTabbedColor menggunakan NamedColor
kelas di Xamarin.Formspustaka Book.Toolkit. File MultiTabbedColorsPage.xaml mengatur DataTemplate
properti ke TabbedPage
pohon visual yang dimulai dengan ContentPage
yang berisi pengikatan ke properti NamedColor
(termasuk pengikatan ke Title
properti ).
Namun, ini bermasalah di iOS. Hanya beberapa item yang dapat ditampilkan, dan tidak ada cara yang baik untuk memberinya ikon.