Udostępnij za pośrednictwem


Podsumowanie rozdziału 25. Różne typy stron

Uwaga

Ta książka została opublikowana wiosną 2016 roku i od tego czasu nie została zaktualizowana. Jest wiele w książce, która pozostaje cenna, ale niektóre materiały są nieaktualne, a niektóre tematy nie są już całkowicie poprawne ani kompletne.

Do tej pory widzieliśmy dwie klasy pochodzące z Pageklasy : ContentPage i NavigationPage. W tym rozdziale przedstawiono dwie inne:

  • MasterDetailPage zarządza dwiema stronami, wzorcem i szczegółami
  • TabbedPage zarządza wieloma stronami podrzędnymi, do których uzyskuje dostęp za pośrednictwem kart

Te typy stron zapewniają bardziej zaawansowane opcje nawigacji niż NavagationPage omówione w rozdziale 24. Nawigacja po stronie.

Wzorzec i szczegóły

Definiuje MasterDetailPage dwie właściwości typu Page: Master i Detail. Zazwyczaj każda z tych właściwości jest ustawiana na ContentPagewartość . Wyświetla MasterDetailPage i przełącza się między tymi dwiema stronami.

Istnieją dwa podstawowe sposoby przełączania się między tymi dwiema stronami:

  • podział , gdzie wzorzec i szczegóły znajdują się obok siebie
  • okno podręczne, w którym strona szczegółów obejmuje lub częściowo obejmuje stronę wzorcową

Istnieje kilka odmian podejścia popover (przesuwanie, nakładanie się i zamiana), ale są one zwykle zależne od platformy. Właściwość elementu MasterDetailPage można ustawić MasterDetailBehavior na element członkowski MasterBehavior wyliczenia:

Jednak ta właściwość nie ma wpływu na telefony. Telefony zawsze mają zachowanie popover. Tylko tablety i okna stacjonarne mogą mieć zachowanie podzielone.

Eksplorowanie zachowań

Przykład MasterDetailBehaviors umożliwia eksperymentowanie z zachowaniem domyślnym na różnych urządzeniach. Program zawiera dwa oddzielne ContentPage pochodne dla wzorca i szczegółów (z właściwością ustawioną na obu), a także inną klasę Title , która pochodzi z MasterDetailPage tej klasy, która je łączy. Strona szczegółów jest ujęta w element , NavigationPage ponieważ program platformy UWP nie będzie działał bez niego.

Platformy Windows 8.1 i Windows Phone 8.1 wymagają ustawienia mapy bitowej na Icon właściwość strony wzorcowej.

Powrót do szkoły

Przykład SchoolAndDetail przyjmuje nieco inne podejście do konstruowania programu do wyświetlania uczniów z biblioteki SchoolOfFineArt.

Właściwości Master i Detail są definiowane z drzewami wizualnymi w pliku SchoolAndDetailPage.xaml, który pochodzi z .MasterDetailPage Takie rozmieszczenie umożliwia ustawianie powiązań danych między stronami wzorcowymi i szczegółowymi.

Ten plik XAML ustawia IsPresented również właściwość na MasterDetailPage Truewartość . Powoduje to wyświetlenie strony wzorcowej podczas uruchamiania; domyślnie wyświetlana jest strona szczegółów. Plik SchoolAndDetailPage.xaml.cs ustawia wartość IsPresented , false gdy element jest zaznaczony na ListView stronie wzorcowej. Następnie zostanie wyświetlona strona szczegółów:

Potrójny zrzut ekranu przedstawiający szczegóły szkoły

Własny interfejs użytkownika

Mimo że Xamarin.Forms udostępnia interfejs użytkownika do przełączania się między widokami głównymi i szczegółowymi, możesz podać własne. Aby to zrobić:

  • Ustaw właściwość na IsGestureEnabled wartość , aby false wyłączyć przesuwanie
  • Zastąpij metodę ShouldShowToolbarButton i wróć false , aby ukryć przyciski paska narzędzi w systemach Windows 8.1 i Windows Phone 8.1.

Następnie należy podać metodę przełączania się między stronami wzorcowym i szczegółowymi, takimi jak pokazano w przykładzie ColorsDetail .

Przykład MasterDetailTaps demonstruje inne podejście przy użyciu elementu TapGestureRecognizer na stronach wzorcowych i szczegółów.

TabbedPage

Jest TabbedPage to kolekcja stron, które można przełączać za pomocą kart. Pochodzi z MultiPage<Page> i nie definiuje właściwości publicznych ani metod własnych. MultiPage<T>jednak definiuje właściwość :

Tę kolekcję należy wypełnić Children obiektami strony.

Innym podejściem jest definiowanie elementów podrzędnych TabbedPage tak jak ListView przy użyciu tych dwóch właściwości, które automatycznie generują strony z kartami:

Jednak takie podejście nie działa dobrze w systemie iOS, gdy kolekcja zawiera więcej niż kilka elementów.

MultiPage<T> Definiuje jeszcze dwie właściwości, które pozwalają śledzić, która strona jest obecnie przeglądana:

  • CurrentPage typu T, odwołując się do strony
  • SelectedItemtypu Object, odwołującego się do obiektu w kolekcji ItemsSource

MultiPage<T> Definiuje również dwa zdarzenia:

Odrębne strony kart

Przykład DiscreteTabbedColors składa się z trzech stron z kartami, które wyświetlają kolory na trzy różne sposoby. Każda karta jest pochodną, a następnie TabbedPage pochodną ContentPage DiscreteTabbedColorsPage.xaml łączy trzy strony.

Dla każdej strony, która pojawia się w TabbedPageobiekcie , Title właściwość jest wymagana do określenia tekstu na karcie, a sklep Apple Store wymaga również użycia ikony, więc Icon właściwość jest ustawiona dla systemu iOS:

Potrójny zrzut ekranu przedstawiający dyskretne kolory z kartami

Przykład StudentNotes zawiera stronę główną zawierającą listę wszystkich uczniów. Gdy student jest naciśnięty, przechodzi do pochodnej TabbedPage metody , StudentNotesDataPagektóra zawiera trzy ContentPage obiekty w drzewie wizualnym, z których jeden umożliwia wprowadzanie notatek dla tego ucznia.

Używanie elementu ItemTemplate

Przykład MultiTabbedColor używa NamedColor klasy w bibliotece Xamarin.FormsBook.Toolkit. Plik MultiTabbedColorsPage.xaml ustawia DataTemplate właściwość na TabbedPage drzewo wizualne, począwszy od ContentPage tego, który zawiera powiązania z właściwościami NamedColor (w tym powiązanie z właściwością Title ).

Jednak jest to problematyczne w systemie iOS. Można wyświetlić tylko kilka elementów i nie ma dobrego sposobu na nadanie im ikon.