Latihan: Menerapkan navigasi tab
Di aplikasi astronomi, Anda diminta untuk menggabungkan tab dengan flyout untuk membantu navigasi di antara halaman yang berbeda.
Hal pertama yang Anda putuskan untuk dilakukan adalah menghapus semua halaman dari flyout dan menambahkannya ke TabBar
, sehingga Anda dapat melihat bagaimana perasaan aplikasi.
Menambahkan Bilah Tab
Di jendela Penjelajah Solusi, buka halaman AppShell.xaml.
Di halaman markup XAML, hapus semua yang ada di
<Shell>
dalam .<TabBar>
Buat dan kosong<Tab>
.<?xml version="1.0" encoding="UTF-8" ?> <Shell x:Class="Astronomy.AppShell" xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:Astronomy.Pages" FlyoutIcon="moon.png"> <TabBar> <Tab> </Tab> </TabBar> </Shell>
Selanjutnya tambahkan ke
ShellContent
Tab
. Kontennya akan menjadiMoonPhasePage
.<TabBar> <Tab> <ShellContent ContentTemplate="{DataTemplate local:MoonPhasePage}" /> </Tab> </TabBar>
Sekarang berikan judul pada tab yang akan ditampilkan dan ikon menggunakan
Title
properti danIcon
.<Tab Title="Moon Phase" Icon="moon.png">
Tambahkan yang lain
Tab
untukSunrisePage
. Buat matahariTitle
terbit yang sama danIcon
sama sun.png. XAML yang sudah selesai akan terlihat seperti ini:<?xml version="1.0" encoding="UTF-8" ?> <Shell x:Class="Astronomy.AppShell" xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:Astronomy.Pages" FlyoutIcon="moon.png"> <Shell.FlyoutHeader> <Grid HeightRequest="100" BackgroundColor="DarkSlateBlue"> <Image Source="moon.png"/> </Grid> </Shell.FlyoutHeader> <TabBar> <Tab Title="Moon Phase" Icon="moon.png"> <ShellContent ContentTemplate="{DataTemplate local:MoonPhasePage}" /> </Tab> <Tab Title="Sunrise" Icon="sun.png"> <ShellContent ContentTemplate="{DataTemplate local:SunrisePage}"/> </Tab> </TabBar> </Shell>
Jalankan aplikasi untuk melihat tampilannya.
Menggabungkan halaman tab dengan flyout
Anda memutuskan masuk akal untuk memiliki fase bulan dan halaman matahari terbit di halaman tab yang sama. Masuk akal juga untuk memisahkan halaman tentang. Jadi Anda memutuskan untuk menambahkan flyout kembali. Item flyout pertama akan menampilkan halaman tab, dan yang kedua halaman tentang.
TabBar
Hapus dan semua turunannya yang baru saja Anda buat.Di tempatnya, tambahkan dalam
<FlyoutItem>
. Atur propertinyaTitle
ke Astronomi dan ikonnya ke moon.png.<FlyoutItem Title="Astronomy" Icon="moon.png"> </FlyoutItem>
<FlyoutItem>
Dalam tambahkan<ShellContent>
yang menunjuk keMoonPhasePage
. Atur propertinyaTitle
ke Fase Bulan danIcon
properti ke moon.png.<FlyoutItem Title="Astronomy" Icon="moon.png"> <ShellContent Title="Moon Phase" Icon="moon.png" ContentTemplate="{DataTemplate local:MoonPhasePage}"/> </FlyoutItem>
Dalam hal yang sama
<FlyoutItem>
tambahkan yang lain<ShellContent>
untuk menunjuk keSunrisePage
. Atur propertinyaTitle
ke Matahari Terbit danIcon
properti ke sun.png.<FlyoutItem Title="Astronomy" Icon="moon.png"> <ShellContent Title="Moon Phase" Icon="moon.png" ContentTemplate="{DataTemplate local:MoonPhasePage}"/> <ShellContent Title="Sunrise" Icon="sun.png" ContentTemplate="{DataTemplate local:SunrisePage}"/> </FlyoutItem>
Mengetuk item flyout ini sekarang akan menampilkan halaman tab dengan dua tab.
Untuk membuat item flyout baru yang menunjuk ke
AboutPage
, tambahkan baru<FlyoutItem>
. Atur propertinyaTitle
ke Tentang danIcon
properti ke question.png.Di dalam itu
<FlyoutItem>
tambahkan<ShellContent>
yang menunjuk keAboutPage
.<FlyoutItem Title="About" Icon="question.png"> <ShellContent ContentTemplate="{DataTemplate local:AboutPage}"/> </FlyoutItem>
Jalankan kembali aplikasi. Anda akan melihat dua item di flyout. Yang pertama akan membuka halaman tab yang berisi
MoonPhasePage
danSunrisePage
. Yang kedua menampilkan dengan sendirinyaAboutPage
.
Butuh bantuan?
XAML akhir untuk AppShell.xaml akan terlihat seperti berikut ini:
<?xml version="1.0" encoding="UTF-8" ?>
<Shell
x:Class="Astronomy.AppShell"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:Astronomy.Pages"
FlyoutIcon="moon.png">
<!-- You can add this back in for the header -->
<!--<Shell.FlyoutHeader>
<Grid HeightRequest="100" BackgroundColor="DarkSlateBlue">
<Image Source="moon.png"/>
</Grid>
</Shell.FlyoutHeader>-->
<FlyoutItem Title="Astronomy" Icon="moon.png">
<ShellContent Title="Moon Phase" Icon="moon.png"
ContentTemplate="{DataTemplate local:MoonPhasePage}"/>
<ShellContent Title="Sunrise" Icon="sun.png"
ContentTemplate="{DataTemplate local:SunrisePage}"/>
</FlyoutItem>
<FlyoutItem Title="About" Icon="question.png">
<ShellContent
ContentTemplate="{DataTemplate local:AboutPage}"/>
</FlyoutItem>
</Shell>