Ćwiczenie: implementowanie nawigacji wysuwanych
W przykładowym scenariuszu masz aplikację .NET MAUI zawierającą strony do wyświetlania informacji o ciałach astronomicznych, fazach księżyca i godzinach słońca/zachodu słońca. Aplikacja zawiera również stronę Informacje. Obecnie wszystkie te strony są autonomiczne, ale chcesz zapewnić użytkownikowi logiczny sposób przechodzenia między nimi.
W tym ćwiczeniu dodasz nawigację wysuwaną do aplikacji.
W tym module jest używany zestaw .NET 10.0 SDK. Upewnij się, że masz zainstalowany program .NET 10.0, uruchamiając następujące polecenie w preferowanym terminalu poleceń:
dotnet --list-sdks
Zostanie wyświetlone dane wyjściowe podobne do następującego przykładu:
9.0.100 [C:\Program Files\dotnet\sdk]
10.0.100 [C:\Program Files\dotnet\sdk]
Upewnij się, że na liście znajduje się wersja rozpoczynająca się od 10 . Jeśli żaden nie jest wymieniony lub nie można odnaleźć polecenia, zainstaluj najnowszy zestaw SDK .NET 10.0.
Otwieranie rozwiązania startowego
Sklonuj lub pobierz repozytorium ćwiczenia.
Uwaga
Najlepiej sklonować lub pobrać zawartość ćwiczenia do krótkiej ścieżki folderu, takiej jak C:\dev, aby uniknąć plików generowanych przez kompilację przekraczającą maksymalną długość ścieżki.
Przejdź do folderu exercise1 w sklonowanym repozytorium, a następnie przejdź do folderu Start .
Użyj programu Visual Studio, aby otworzyć rozwiązanie Astronomy.sln lub folder w programie Visual Studio Code.
W oknie Eksplorator rozwiązań w projekcie Astronomia rozwiń folder Pages. Ten folder zawiera następujące strony:
- AboutPage. Na tej stronie są wyświetlane informacje o aplikacji.
- MoonPhasePage. Na tej stronie są wyświetlane konkretne informacje o fazach Księżyca, jak widać na Ziemi.
- SunrisePage. Na tej stronie są wyświetlane godziny słońca i zachodu słońca dla lokalizacji na Ziemi. Dane są dostarczane przez usługę internetową Sunrise Sunset.
Skompiluj i uruchom aplikację. Po uruchomieniu aplikacji zostanie wyświetlony element MoonPhasePage , ale obecnie nie ma możliwości umożliwienia użytkownikowi przechodzenia do innych stron.
Na poniższej ilustracji przedstawiono aplikację uruchomioną w emulatorze systemu Android:
Zamknij aplikację i wróć do programu Visual Studio lub Visual Studio Code.
Dodaj nawigację wysuwaną
W oknie Eksplorator rozwiązań otwórz stronę AppShell.xaml .
W edytorze znaczników XAML umieść istniejący
<ShellContent>element za pomocą elementu<FlyoutItem>.TitleUstaw właściwość<Flyout>elementu na Fazę Księżyca. Znacznik powinien wyglądać następująco:<FlyoutItem Title="Moon Phase"> <ShellContent ContentTemplate="{DataTemplate local:MoonPhasePage}"/> </FlyoutItem>FlyoutIconDodaj właściwość do węzła,<Shell>aby wyświetlić obraz. Domyślnie wyświetla trzy poziome paski, ale możemy zmienić ją tak, aby była dowolna. Znacznik powinien wyglądać następująco:<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">Uruchom aplikację. Powinien zostać wyświetlony obraz księżyca w lewym górnym rogu aplikacji.
Naciśnij ikonę i zostanie wyświetlone okno wysuwane.
Teraz dodaj więcej opcji wysuwanych. Utwórz nową
<FlyoutItem>poniżej właśnie wykonanej i ustaw jejTitlewartość na Sunrise. PowinnaShellContentwskazywaćSunrisePagestronę.Dodaj kolejny
<FlyoutItem>element , ustaw jego tytuł na About (Informacje). Tym razem ustaw parametr naShellContentAboutPagewartość . Kod XAML dla tych dwóch elementów powinien wyglądać następująco:<FlyoutItem Title="Sunrise"> <ShellContent ContentTemplate="{DataTemplate local:SunrisePage}"/> </FlyoutItem> <FlyoutItem Title="About"> <ShellContent ContentTemplate="{DataTemplate local:AboutPage}"/> </FlyoutItem>Uruchom ponownie aplikację, a teraz w wysuwaniu są dostępne trzy opcje. Naciśnięcie elementu wysuwanych powoduje wyświetlenie odpowiedniej strony.
Uwaga
Jeśli korzystasz z platformy innej niż Windows, może być konieczne włączenie uprawnień Lokalizacja dla aplikacji na tej platformie, aby strona Sunrise/Sunset Times działała. Na przykład na urządzeniu z systemem Android ustaw opcję Dostęp do lokalizacji na wartość Zezwalaj tylko podczas korzystania z aplikacji.
Dodawanie ikon
Być może zauważysz, że elementy wysuwane wyglądają nieco puste. Ikony można dodawać do elementów wysuwanych przy użyciu Icon właściwości .
Niektóre obrazy zostały już dodane do folderu Resources\Images do użycia.
IconUstaw właściwość pierwszegoFlyoutItemna moon.png.<FlyoutItem Title="Moon Phase" Icon="moon.png"> <ShellContent ContentTemplate="{DataTemplate local:MoonPhasePage}" /> </FlyoutItem>Powtórz pozostałe 2 elementy wysuwane, używając odpowiednio sun.png i question.png .
<FlyoutItem Title="Sunrise" Icon="sun.png"> <ShellContent ContentTemplate="{DataTemplate local:SunrisePage}"/> </FlyoutItem> <FlyoutItem Title="About" Icon="question.png"> <ShellContent ContentTemplate="{DataTemplate local:AboutPage}"/> </FlyoutItem>Uruchom aplikację i otwórz okno wysuwane. Każdy element wysuwany ma teraz skojarzona ikona.
Dodawanie nagłówka wysuwanego
Elementy wysuwane znajdują się w górnej części menu wysuwanego, co utrudnia ich rozróżnienie. Możemy dodać trochę miejsca na górę, a nawet całe View za pomocą elementu <Shell.FlyoutHeader>.
Dodaj nagłówek wysuwany jako element podrzędny węzła
<Shell>:<Shell.FlyoutHeader> </Shell.FlyoutHeader>Możesz utworzyć dowolną hierarchię widoków w obiekcie
<Shell.FlyoutHeader>. Umieśćmy element zGridelementemImage.<Shell.FlyoutHeader> <Grid HeightRequest="100" BackgroundColor="DarkSlateBlue"> <Image Source="moon.png" /> </Grid> </Shell.FlyoutHeader>