Ćwiczenie: Implementowanie nawigacji na karcie
W aplikacji astronomicznej poproszono Cię o połączenie kart z wysuwanymi, aby ułatwić nawigację między różnymi stronami.
Pierwszą rzeczą, którą chcesz zrobić, jest usunięcie wszystkich stron z wysuwanego elementu i dodanie ich do TabBarelementu , aby zobaczyć, jak działa aplikacja.
Dodawanie paska tabulatora
W oknie Eksplorator rozwiązań otwórz stronę AppShell.xaml.
Na stronie znaczników XAML usuń wszystkie elementy wewnątrz elementu
<Shell>.Utwórz element
<TabBar>i pusty<Tab>element .<?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>Następnie dodaj element
ShellContentdoTabelementu i ustaw jego zawartość naMoonPhasePagewartość .<TabBar> <Tab> <ShellContent ContentTemplate="{DataTemplate local:MoonPhasePage}" /> </Tab> </TabBar>Teraz nadaj karcie tytuł do wyświetlenia i ikonę przy użyciu
Titlewłaściwości iIcon.<Tab Title="Moon Phase" Icon="moon.png">Dodaj inny
Tabelement dla elementuSunrisePage. Ustaw jegoTitlena wschód słońca i jegoIconwartość, aby sun.png. Gotowy kod XAML wygląda następująco:<?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>Uruchom aplikację, aby zobaczyć, jak wygląda.
Łączenie stron tabulacji z wysuwanym
Decydujesz, że na tej samej stronie karty ma sens faza księżyca i strony wschodu słońca. Warto również zachować oddzielną stronę. Dlatego decydujesz się dodać okno wysuwane z powrotem. Pierwszy element wysuwany wyświetla stronę karty, a drugą stronę z informacjami.
Usuń wszystkie
TabBarzawarte w nim elementy podrzędne i .W swoim miejscu dodaj element w elemecie
<FlyoutItem>. Ustaw jejTitlewłaściwość na Astronomię i jej ikonę, aby moon.png.<FlyoutItem Title="Astronomy" Icon="moon.png"> </FlyoutItem>W pliku
<FlyoutItem>dodaj element wskazujący<ShellContent>elementMoonPhasePagena . Ustaw jejTitlewłaściwość na Moon Phase iIconwłaściwość na moon.png.<FlyoutItem Title="Astronomy" Icon="moon.png"> <ShellContent Title="Moon Phase" Icon="moon.png" ContentTemplate="{DataTemplate local:MoonPhasePage}"/> </FlyoutItem>W tym samym
<FlyoutItem>pliku dodaj inny element<ShellContent>, aby wskazać elementSunrisePage. Ustaw jejTitlewłaściwość na Sunrise iIconwłaściwość na 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>Teraz naciśnięcie tego elementu wysuwanego powoduje wyświetlenie strony karty z dwiema kartami.
Aby utworzyć nowy element wysuwany wskazujący element
AboutPage, dodaj nowy<FlyoutItem>element . Ustaw jejTitlewłaściwość na About (Informacje) i property (Informacje )Iconna wartość question.png.W tym
<FlyoutItem>elemecie dodaj element wskazujący<ShellContent>elementAboutPage.<FlyoutItem Title="About" Icon="question.png"> <ShellContent ContentTemplate="{DataTemplate local:AboutPage}"/> </FlyoutItem>Ponownie uruchom aplikację. Powinny zostać wyświetlone dwa elementy w wysuwaniu. Pierwszy otwiera stronę karty zawierającą elementy
MoonPhasePageiSunrisePage. Drugi wyświetlaAboutPagesam element .
Potrzebujesz pomocy?
Końcowy kod XAML dla pliku AppShell.xaml powinien wyglądać następująco:
<?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>