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 Page
klasy : ContentPage
i NavigationPage
. W tym rozdziale przedstawiono dwie inne:
MasterDetailPage
zarządza dwiema stronami, wzorcem i szczegółamiTabbedPage
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 ContentPage
wartość . 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
True
wartość . 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:
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ść , abyfalse
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ść :
Children
właściwość typuIList<T>
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:
ItemsSource
typuIEnumerable
ItemTemplate
typuDataTemplate
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
typuT
, odwołując się do stronySelectedItem
typuObject
, odwołującego się do obiektu w kolekcjiItemsSource
MultiPage<T>
Definiuje również dwa zdarzenia:
PagesChanged
ItemsSource
gdy kolekcja ulegnie zmianieCurrentPageChanged
gdy wyświetlona strona ulegnie zmianie
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 TabbedPage
obiekcie , 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:
Przykład StudentNotes zawiera stronę główną zawierającą listę wszystkich uczniów. Gdy student jest naciśnięty, przechodzi do pochodnej TabbedPage
metody , StudentNotesDataPage
któ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.