Xamarin.Forms i Prism – Hello world!

W poprzednim wpisie opisałem w jaki sposób możemy stworzyć projekt wykorzystujący framework Prism. Razem z utworzonym projektem otrzymujemy bardzo prosty program wyświetlający użytkownikowi wiadomość. W dzisiejszym wpisie przyjrzymy się bliżej w jaki sposób działa szkielet powstałej aplikacji.

Hello world!

Wygenerowana przez nas solucja składa się z kilku projektów:

solucja

Projekt oznaczony jako Portable jest sercem naszej aplikacji, a dokładniej mówiąc biblioteką PCL (Portable Class Library) wykorzystywaną przez pozostałe projekty, które są dedykowane dla poszczególnych platform. Projekt platformowy w momencie uruchomienia startuje bibliotekę PCL, co w przypadku projektu Androidowego wygląda następująco:

Tworzona jest tutaj klasa App z projektu PCL:

Klasa App dziedziczy po klasie PrismApplication, a ta z kolei po PrismApplicationBase. W niej następuje też cały proces inicjalizacji aplikacji:

Metoda Initialize wykonuje całe szereg konfiguracji. Prism został zaprojektowany w sposób umożliwiający możliwie jak największą elastyczność, dlatego też każda z metod może zostać przez nas zmodyfikowana.

Klasa App wygenerowana dla nas podczas tworzenia projektu zawiera dwie metody: OnInitialized oraz RegisterTypes . Pierwsza wołana jest metoda RegisterTypes:

W metodzie tej za pomocą kontenera DI (Dependency Injection) rejestrujemy typy używane w naszej aplikacji. Za obiektem Container skrywa się kontener Unity, natomiast RegisterTypeForNavigation to specjalnie przygotowana dla niego metoda rozszerzająca (extension method). Nasza aplikacja składa się z jednego widoku (MainPage), który zostaje zarejestrowany w kontenerze.

Następnie w metodzie OnInitialized, za pomocą NavigationService (którego omówię w kolejnym wpisie) wyświetlona zostaje strona MainPage.xaml.

Widok

Wygenerowany plik widoku wygląda następująco:

Interesujące dla nas mogą być dwie linijki. Pierwsza to:

Importująca przestrzeń nazw dla Prism, oraz:

AutowireViewModel umożliwia zmapowanie w automatyczny sposób widoków z odpowiadającymi im modelami widoku. Więcej informacji na ten temat zamieszczę w kolejnych wpisach.

Model widoku

Wygenerowana klasa modelu widoku dziedziczy z klasy BindableBase, która jest dostarczona przez bibliotekę Prism oraz implementuję interfejsu INavigationAware:

Klasa BindableBase zawiera implementację interfejsu INotifyPropertyChanged:

Interfejs INavigationAware natomiast zawiera dwie metody które są wywołane kiedy nastąpiła zmiana strony:

Dołączona właściwość AutowireViewModel pozwala powiązać widok z modelem widoku. Dzięki temu, nasz widok:

może odczytać z modelu widoku właściwość:

W ten sposób na ekranie aplikacji wyświetlony zostaje komunikat, a my możemy cieszyć się pierwszą aplikacją stworzoną przy użyciu Prisma.

Facebooktwitter

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *