Standardowo tworzenie aplikacji przy użyciu wzorca Prism przedstawia się następująco:
Jak widać kroki jakie należy podjąć przedstawiają się następująco:
1. Stworzenie modułu Shella, odpowiedzialnego za wizualną reprezentację aplikacji, zdefiniowanie regionów itp.
2. Stworzenie Bootstrappera odpowiedzialnego za inicjację oprogramowania.
3. Stworzenie modułu/ów odpowiedzialnych za poszczególne części (funkcjonalności) składowe tworzonego systemu
1. Tworzenie Shella
Rozpoczniemy od utworzenia Shella. W tym celu tworzymy nowy projekt WPF w Visual Studio 2010. Następnie:- usuwamy domyślne okno MainWindow.xaml
- z pliku App.xaml usuwamy zapis: StartupUri="MainWindow.xaml"
- dodajemy nowe okno o nazwie Shell
- dodajemy referencje do DLL podanych w pierwszym artykule o Prism
Finalny ekran będzie wyglądać następująco:
2. Bootstrapper
Bootstrapper pełni rolę kleju w naszej aplikacji. Odpowiada za inicjalizację głównego okna, rejestrację modułów, inicjalizację kontenera DI.
W projekcie więc tworzymy nową klasę o nazwie Bootstrapper. Klasa ta dziedziczy po klasie UnityBootstrapper. Na wstępie musimy zaimplementować metodę CreateShell():
Code:
Następnie w metodzie InitializeShell wskażemy nasz Shell jako startowe okno aplikacji:
Code:
Cała klasa na obecny moment wygląda następująco:
Code:
Podczas inicjalizacji Bootstrappera zostają zarejestrowane podstawowe usługi (serwisy) które następnie mogą zostać wykorzystane przy budowie naszych modułów. Usługi z których możemy skorzystać to:
IModuleManager - zwraca interfejs wykorzystywany do inicjalizacji i zwracania modułów
IModuleCatalog - metadane o modułach w aplikacji
IModuleInitializer - inicjuje moduły
IRegionManager - rejestruje regiony, wykorzystywane przy wizualnej reprezentacji naszej aplikacji
IEventAggregator - reprezentuje kolekcję zdarzeń które są luźno powiązane pomiędzy subskrybującymi i oferującymi usługi.
ILoggerFacade - mechanizm logowania zdarzeń występujących w naszej aplikacji
IServiceLocator - pozwala na dostanie się do kontenera tworzonego w Prism.
W tym momencie uruchomienie aplikacji nie spowoduje jeszcze wyświetlenia okienka aplikacji. Naszego Bootstrappera wszak musi coś uruchomić.
W pliku App.cs dokładamy następujący kod:
Code:
Po skompilowaniu i uruchomieniu aplikacji możemy zobaczyć - póki co - puste okienko naszej aplikacji.
W następnym artykule pokaże w jaki sposób można coś załadować do tak stworzonego okienka.
Czym się tak naprawdę różni się forma zapisu a i b
OdpowiedzUsuńvar rightView = this.unityContainer.Resolve();
a) this.regionManager.Regions[Regiony.RightRegion].Add(rightView);
b) this.regionManager.RegisterViewWithRegion(Regiony.RightRegion, typeof(ViewProdukt));
a) widok zostanie dodany do regionu ale nie aktywowany
OdpowiedzUsuńb) widok zostanie dodany do regionu i aktywowany