תרגיל: יישום ניווט בכרטיסיות
באפליקציית האסטרונומיה, אתה מתבקש לשלב כרטיסיות עם התפריט הנשלף כדי לעזור בניווט בין העמודים השונים.
הדבר הראשון שאתה מחליט לעשות הוא להסיר את כל העמודים מהתפריט הנשלף ולהוסיף אותם TabBar, כך שתוכל לראות כיצד האפליקציה מרגישה.
הוספת סרגל כרטיסיות
בחלון סייר הפתרונות, פתח את AppShell.xaml שלך.
בדף הסימון של XAML, מחק את כל מה שבתוך
<Shell>.צור
<TabBar>ותרשים ריק<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>לאחר מכן, הוסף
ShellContentלדףTabוהגדר את התוכן שלוMoonPhasePage.<TabBar> <Tab> <ShellContent ContentTemplate="{DataTemplate local:MoonPhasePage}" /> </Tab> </TabBar>כעת תן לכרטיסייה כותרת להצגה וסמל באמצעות המאפיינים
TitleוIconהמאפיינים.<Tab Title="Moon Phase" Icon="moon.png">הוסף עוד
TabעבורSunrisePage. הגדר אתTitleכדי בזריחה שלהIconכדי sun.png. ה- XAML המוגמר נראה כך:<?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 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>הפעל את האפליקציה כדי לראות כיצד היא נראית.
שילוב עמודי כרטיסיה עם תפריט נשלף
אתה מחליט שזה הגיוני שעמודי שלב הירח וזריחה קיימים באותו דף כרטיסיה. הגיוני גם להשאיר את העמוד אודות בנפרד. לכן אתה מחליט להוסיף את התפריט הנשלף בחזרה. הפריט הנשלף הראשון מציג את דף הכרטיסיה, והפריט השני אודות עמוד.
מחק את
TabBarואת כל פריטי הצאצא הכלולים בה.במקומה, הוסף חשבון
<FlyoutItem>. הגדר אתTitleשלו כך אסטרונומיה הסמל שלו כדי moon.png.<FlyoutItem Title="Astronomy" Icon="moon.png"> </FlyoutItem>בתוך
<FlyoutItem>, הוסף<ShellContent>שמצביעה עלMoonPhasePage. הגדר את המאפייןTitleשלו ל- Moon PhaseIconו-Iconל- moon.png.<FlyoutItem Title="Astronomy" Icon="moon.png"> <ShellContent Title="Moon Phase" Icon="moon.png" ContentTemplate="{DataTemplate local:MoonPhasePage}"/> </FlyoutItem>באותו
<FlyoutItem>, הוסף עוד<ShellContent>כדי להצביע עלSunrisePage. הגדר את המאפייןTitleשלו ל- Sunrise ו-Iconכדי לראות 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>כעת, הקשה על פריט נשלף זה מציגה עמוד כרטיסיה עם שתי כרטיסיות.
כדי ליצור פריט תפריט נשלף חדש שמצביע על
AboutPage, הוסף פריט<FlyoutItem>. הגדר את המאפייןTitleשלו כמאפיין אודות והמאפייןIconכ- question.png.בתוך
<FlyoutItem>, הוסף<ShellContent>שמצביעה עלAboutPage.<FlyoutItem Title="About" Icon="question.png"> <ShellContent ContentTemplate="{DataTemplate local:AboutPage}"/> </FlyoutItem>הפעל שוב את האפליקציה. אתה אמור לראות שני פריטים בתפריט הנשלף. הראשונה פותחת עמוד כרטיסיה המכיל את
MoonPhasePageוכרטיסיהSunrisePage. השניה מציגה אתAboutPageבפני עצמה.
זקוק לעזרה?
קוד ה- XAML הסופי עבור AppShell.xaml אמור להיראות כך:
<?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>