universal app – sviluppo di app per windows store gianluca bertelli [email protected]
TRANSCRIPT
- Slide 1
- Universal App Sviluppo di App per Windows Store Gianluca Bertelli [email protected]
- Slide 2
- Agenda Piattaforme Struttura di un App Grafica Componibile DataBinding Model View ViewModel (MVVM) Alcuni Suggerimenti Q&A
- Slide 3
- Piattaforme
- Slide 4
- Piattaforme (Chi ben comincia...) Windows Phone 7.8 Windows Phone 8 Windows Phone 8.1 Windows Store Universal
- Slide 5
- Piattaforme (...) Windows Store App 8.1 Windows Store Universal
- Slide 6
- Piattaforme (..a met dellopera!) Windows Store Universal Windows App (Windows 10)
- Slide 7
- Struttura di un App (Universal) Phone Windows Shared
- Slide 8
- Struttura di un App (Universal) UI XAML HTML
- Slide 9
- Grafica componibile Griglia Pannello orrizontale Controllo custom Pulsante Barra di stato Data Windows Phone Shared
- Slide 10
- PROJECT DEMO
- Slide 11
- DataBinding Connessione Automatica tra UI e business logic Nasconde ed evita limplementazione di meccanismi di refresh Textbox1 Textbox2 Textbox3 Persona DataContext
- Slide 12
- INotifyPropertyChanged Prima public string Name { get; set; } Dopo private string name; public string Name { get { return name; } set { name = value; NotifyOfPropertyChange(() => Name); } XAML
- Slide 13
- DATABINDING DEMO
- Slide 14
- Model View ViewModel (MVVM) MVC?
- Slide 15
- Model View ViewModel (MVVM)
- Slide 16
- Sfrutta il meccanismo del Binding Pacchetti NuGet gratuiti di diversi autori Permette di minimizzare lutilizzo del code behind Massimizza il riutilizzo e la testabilit della parte di modello E possibile riutilizzare lo stesso ViewModel su grafiche differenti
- Slide 17
- Command no more OnButtonClick! Gli eventi nellapproccio tradizionale vengono gestiti tramite event handler definiti nel code behind (OnButtonClick...) Abilitare o meno un pulsante richiede di gestirne lo stato in vari punti dellapplicazione, o avere un metodo di refresh UI Vorrei gestire il ButtonClick nel modello e non nella grafica Vorrei che il pulsante si abiliti/disabiliti in automatico in base allo stato corrente Command
- Slide 18
- Command no more OnButtonClick! E una propiet dei controlli Sfrutta il Binding Code private ICommand _pinToStart; public ICommand PinToStart { get { return _pinToStart ?? (_pinToStart = new RelayCommand( () => taskService.PinToStart(CurrentItem), () => canPin)); } XAML
- Slide 19
- MVVM DEMO
- Slide 20
- Alcuni suggerimenti Scrivete le classi di Modello in Portable Class Library (PCL) Separazione netta tra Modello e Data Access Layer Un minimo di Unit Testing Implementate il workflow/macchina a stati gi nel modello Scrivetevi Componenti custom Massimizzare lutilizzo del progetto Shared Stili Immagini file Design Data Utilizzate un progetto Universal come base di partenza
- Slide 21
- Q & A Gianluca Bertelli [email protected] @bertelli