Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
MasterDetailPagezarządza dwiema stronami, wzorcem i szczegółamiTabbedPagezarzą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:
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
IsGestureEnabledwartość , abyfalsewyłączyć przesuwanie - Zastąpij metodę
ShouldShowToolbarButtoni 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ść :
Childrenwł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:
ItemsSourcetypuIEnumerableItemTemplatetypuDataTemplate
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:
CurrentPagetypuT, odwołując się do stronySelectedItemtypuObject, odwołującego się do obiektu w kolekcjiItemsSource
MultiPage<T> Definiuje również dwa zdarzenia:
PagesChangedItemsSourcegdy kolekcja ulegnie zmianieCurrentPageChangedgdy 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 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:
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.

