Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Realizacja aplikacji internetowych

Podobne prezentacje


Prezentacja na temat: "Realizacja aplikacji internetowych"— Zapis prezentacji:

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… 


Pobierz ppt "Realizacja aplikacji internetowych"

Podobne prezentacje


Reklamy Google