1 Realizacja aplikacji internetowychMVVM, Prism i inni
2 MVC, MVP
3 MVVM Anemiczny model ?
4 MVVM Model services
5 MVVM czytanki
6 Tradycyjna aplikacja Widok 1 Widok 2 Widok 1 Widok 2 Widok 2 Widok 2
7 MVVM Widok 1 Widok 1 Model(e) i serwisy Widok 2 Widok 2 Model Widoku
8 Prism 2.X 4.0 – WPF 4.0, SL4.0 4.1 – WPF 4.0, SL5.0 4.5 – WPF 4.5, SL5.0 Podstawowe pojęcia: Shell Bootstapper Moduł Region Widok
9 Prism – architektura aplik.
10 Prism – bootstrapper Inicjalizacja : AplikacjiSerwisów infrastukturalnych (core services) Serwisów aplikacji
11 Prism – bootstrapper UnityBootstrapper / MefBootstrapperCore services: IModuleManager, IModuleCatalog, IModuleInitializer, IRegionManager, IEventAggregator, ILoggerFacade, IServiceLocator
12 Prism – shell Główne okno/strona Anlogia do masterpageObejmuje regiony Tworzony w Bootstrapperze (wstrzykiwany z Unity/MEF)
13 Prism – Region “placeholder” dla dynamicznego kontentu Adaptery:
14 Prism – Wstrzykiwanie widokówKod pobiera (np. z RegionManagera) referencję do regionu, tworzy i wstrzykuje widok IRegion region = regionManager.Regions["MainRegion"]; var ordersView = container.Resolve
15 Prism – Odkrywanie widokówDefiniujemy w RegionViewRegistry relacje Region vs. Typ Widkoku i podczas tworzenia regionu automatycznie tworzony jest odpowiedni widok this.regionManager.RegisterViewWithRegion("MainRegion“, () => this.container.Resolve
16 Prism – Region adapter-yContentControlRegionAdapter – dla kontrolek System.Windows.Controls.ContentControl i pochodnych SelectorRegionAdapter - dla pochodnych klas System.Windows.Controls.Primitives. (np. System.Windows.Controls.TabControl control). ItemsControlRegionAdapter – dla kobtrolek typu System.Windows.Controls.ItemsControl i pochodnych TabControlRegionAdapter – (tylko SL) Custom adapter np. dla stack pannel mappings.RegisterMapping(typeof(StackPannel), new StackPannelRegionAdapter());
17 Prism – custom adapter protected override void Adapt(IRegion region, ContentControl regionTarget) { region.Views.CollectionChanged += (sender, e) => { if (e.Action == NotifyCollectionChangedAction.Add) foreach(FrameworkElements element in e.NewItems) { regionTarget.Children.Add(element) ; } // handle removing of elemts };
18 Prism – Komunikacja Komendy Shared Services EventAggregatorDelegateCommand – zwykle lokalna, używa delegatów, nie wymaga handlerów DelegateCommand – bez paramerów DelegateCommand
19 Prism – Komendy DelegateCommand – zwykle lokalna, używa delegatów, nie wymaga handlerów DelegateCommand – bez paramerów DelegateCommand
20 Prism – EventAggregator
21 EA – subskrypcja eventAggregator.GetEvent
22 EA – publikacja, rezygnacja z s.EventAggregator.GetEvent
23 Region Context Obiekt współdzielony przez hosta i widoki w regionieWidoczny w XML i w kodzie Wymaga dependancy object To nie to samo co DataContext Definicja: RegionManager.Regions["Region1"].Context = employeeId; Odwołanie ObservableObject Lub cal:RegionManager.RegionContext="{Binding Path=SelectedEmployee.EmployeeId}"
24 Prism linki HomePage http://compositewpf.codeplex.com/HOL - Dokumentacja
25 Inne MVVM Caliburn Micro Knockout (JavaScript framework) I inne…