Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Realizacja aplikacji internetowych
MVVM, 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 : Aplikacji
Serwisów infrastukturalnych (core services) Serwisów aplikacji
11
Prism – bootstrapper UnityBootstrapper / MefBootstrapper
Core services: IModuleManager, IModuleCatalog, IModuleInitializer, IRegionManager, IEventAggregator, ILoggerFacade, IServiceLocator
12
Prism – shell Główne okno/strona Anlogia do masterpage
Obejmuje regiony Tworzony w Bootstrapperze (wstrzykiwany z Unity/MEF)
13
Prism – Region “placeholder” dla dynamicznego kontentu Adaptery:
14
Prism – Wstrzykiwanie widoków
Kod pobiera (np. z RegionManagera) referencję do regionu, tworzy i wstrzykuje widok IRegion region = regionManager.Regions["MainRegion"]; var ordersView = container.Resolve<OrdersView>(); region.Add(ordersView, "OrdersView"); region.Activate(ordersView);
15
Prism – Odkrywanie widoków
Definiujemy w RegionViewRegistry relacje Region vs. Typ Widkoku i podczas tworzenia regionu automatycznie tworzony jest odpowiedni widok this.regionManager.RegisterViewWithRegion("MainRegion“, () => this.container.Resolve<EmployeeView>());
16
Prism – Region adapter-y
ContentControlRegionAdapter – 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 EventAggregator
DelegateCommand – zwykle lokalna, używa delegatów, nie wymaga handlerów DelegateCommand – bez paramerów DelegateCommand<T> - wymaga parametrów (XAML-> commandParameter=…) CompositeCommand - zwykle globalna, służy do składania komend, składanie komend (dziala CanExecute -> wszystkie muszą być dostępne) Shared Services EventAggregator Region Context
19
Prism – Komendy DelegateCommand – zwykle lokalna, używa delegatów, nie wymaga handlerów DelegateCommand – bez paramerów DelegateCommand<T> - wymaga parametrów (XAML-> commandParameter=…) CompositeCommand - zwykle globalna, służy do składania komend, składanie komend (dziala CanExecute -> wszystkie muszą być dostępne)
20
Prism – EventAggregator
21
EA – subskrypcja eventAggregator.GetEvent<TickerSymbolSelectedEvent>().Subscribe(ShowNews); wątki: PublisherThread BackgroundThread UIThread. eventAggregator.GetEvent<TickerSymbolSelectedEvent>().Subscribe(ShowNews, ThreadOption.UIThread); Filtrowanie: fundAddedEvent.Subscribe(FundAddedEventHandler, ThreadOption.UIThread, false, fundOrder => fundOrder.CustomerId == _customerId);
22
EA – publikacja, rezygnacja z s.
EventAggregator.GetEvent<TickerSymbolSelectedEvent>().Publish(“STOCK0”); Rezygnacja z subskrypcji: FundAddedEvent fundAddedEvent = eventAggregator.GetEvent<FundAddedEvent>(); subscriptionToken = fundAddedEvent.Subscribe( FundAddedEventHandler, ThreadOption.UIThread, false); fundAddedEvent.Unsubscribe(subscriptionToken);
23
Region Context Obiekt współdzielony przez hosta i widoki w regionie
Widoczny w XML i w kodzie Wymaga dependancy object To nie to samo co DataContext Definicja: RegionManager.Regions["Region1"].Context = employeeId; Odwołanie ObservableObject<object> viewRegionContext = RegionContext.GetObservableContext(this); 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…
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.