SlideShare a Scribd company logo
ITALIAN WEBINAR #6

IL PATTERN MVVM
Matteo Pagani
Nokia Developer Champion
Microsoft MVP – Windows Phone Development
Software Engineer @ Funambol
AGENDA
• Il pattern MVVM
• Toolkit e framework
• Caliburn Micro

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
IL PATTERN
MVVM
© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
CODE BEHIND
•
•

•
•

Nell’approccio abituale, la logica viene scritta nel code behind, insieme al
codice per gestire le interazioni con l’interfaccia grafica
E’ difficile separare i due contesti e identificare i problemi
E’ difficile scrivere test, perché richiederebbe la simulazione delle interazioni
con l’interfaccia grafica
E’ difficile per un designer lavorare sulla grafica senza conoscere i dettagli
implementativi

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
MODEL-VIEW-VIEWMODEL
•
•
•

Aiuta a separare logica e interfaccia utente, aiutando a mantenere
leggibilità, testabilità, manutenibilità e «blendability»
Prevede la separazione del codice in tre strati differenti
Sfrutta le caratteristiche principali del linguaggio XAML, come DataContext
e binding, per collegare i vari strati tra di loro

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
MODEL
•

•

Rappresenta le entità e i servizi che recuperano i dati necessari
all’applicazione in maniera “grezza”, senza avere dipendenze da come
devono essere presentati
Alcuni esempi:
•
La definizione delle entità base
•
Interazione con un database
•
Interazione con un servizio REST o WCF
•
Download di file dalla rete

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
VIEW
•
•

•
•

Rappresenta l’interfaccia grafica dell’applicazione
Contiene tutti i controlli, le animazioni e gli effetti visuali che definiscono la
UI dell’applicazione.
Il linguaggio di riferimento per le tecnologie Windows 8 e Windows Phone è
lo XAML.
Il code behind non deve contenere logica, ma al massimo codice necessario
per gestire elementi dell’interfaccia (ad esempio, animazioni).

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
VIEW MODEL
•
•
•
•

E’ il punto di contatto tra View e Model
Si occupa di prendere i dati grezzi esposti dal Model e di elaborarli per
essere presentati dalla View.
Il ViewModel viene assegnato come DataContext della pagina: di
conseguenza, tutti i controlli possono accedere alle proprietà del ViewModel
Sfrutta il concetto di binding, per creare un canale bidirezionale di
comunicazione tra le proprietà del ViewModel i e controlli presenti nello
XAML.

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
INOTIFYPROPERTYCHANGED
•
•
•

E’ l’interfaccia che deve essere implementata da qualsiasi classe che
interagisce con la View (nello specifico del pattern, dai ViewModel)
Consente di propagare le modifiche fatte alle proprietà di un oggetto ai
controlli nella View collegati
ObservableCollection<T> è un tipo particolare di collezione che implementa

INotifyPropertyChanged

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
INOTIFYPROPERTYCHANGED
Before
public string Name { get; set; }

After
private string name;
public string Name
{
get { return name; }
set
{
name = value;
NotifyOfPropertyChange(() => Name);
}
}
XAML
<TextBlock Text="{Binding Path=Name}" />

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
COMMAND
•
•
•

I command sono funzioni che possono essere associate ad una azione su un
controllo, grazie alla proprietà Command
A differenza degli event handler, possono essere associati ad un controllo
tramite binding
Supportano la gestione dello stato del comando (abilitato o disabilitato), che
si riflette in automatico sullo stato del controllo

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
COMMAND
Code
private ICommand _pinToStart;
Il codice da
public ICommand PinToStart
eseguire
{
get
{
return _pinToStart
?? (_pinToStart = new RelayCommand(
() => taskService.PinToStart(CurrentItem),
() => canPin));
Il comando è
}
abilitato?
}
XAML
<Button Content="Pin to start" Command="{Binding Path=PinToStart}" />
© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
MVVM
Demo

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
TOOLKIT E
FRAMEWORK

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
TOOLKIT E FRAMEWORK
•
•

•
•

MVVM è un pattern, non una libreria
Le librerie disponibili non rappresentano MVVM, ma aiutano a implementare
MVVM
I toolkit offrono gli strumenti base per implementare il pattern e tendono ad
essere indipendenti dalla piattaforma
I framework offrono strumenti per gestire con il pattern MVVM i casi d’uso
più comuni della piattaforma

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
MVVM LIGHT
•
•

•

Toolkit di Laurent Bugnion (http://mvvmlight.codeplex.com/)
Compatibile con tutte le tecnologie XAML / C# (Silverlight, WPF, Windows
Phone, Windows Store app)
Alcune caratteristiche:
•
Classe base per i ViewModel con supporto a INotifyPropertyChanged
•
Classe base per implementare i Command
•
Messenger per scambiare messaggi tra i ViewModel

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
LE GRANDI DOMANDE
•

•
•

Come gestisco la navigazione da una pagina
all’altra?
Come gestisco il tombstoning?
Come gestisco i deep link?
© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
CALIBURN MICRO
•
•
•

Framework ideato da Rob Eisenberg (http://caliburnmicro.codeplex.com)
Compatibile con tutte le tecnologie XAML / C#
Feature specifiche per Windows Phone:
•
Supporto alla navigazione e al ciclo di vita delle pagine
•
Supporto al tombstoning
•
Supporto ai launcher & chooser
•
Supporto alla gestione di liste

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
CALIBURN MICRO
•

•

•

Supporta le naming convention: non è necessario effettuare il binding
manualmente, è sufficiente seguire alcune convenzioni sui nomi delle
proprietà o dei metodi
Esempi:
•
MainView -> MainViewModel per avere il binding tra View e ViewModel
•
x:Name di un controllo TextBlock = nome di una proprietà nel
ViewModel per il binding
•
x:Name di un controllo Button = nome di un metodo nel ViewModel per
il command da eseguire
E’ supportato comunque l’approccio tradizionale
© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
CALIBURN MICRO
Demo

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
CICLO DI VITA DELLA PAGINA
•

•

E’ sufficiente ereditare il ViewModel dalla classe Screen per avere accesso
agli eventi:
•
OnInitialize(), quando la pagina viene inizializzata la prima volta
•
OnActivate(), quando la pagina viene visualizzata (OnNavigatedTo)
•
OnDeactivate(), quando l’utente lascia la pagina corrente
(OnNavigatedFrom)
Approccio ViewModel first con supporto ai parametri

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
CALIBURN E IL
CICLO DI VITA
DELLA PAGINA
Demo

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.
Grazie!
Blog:
http://www.qmatteoq.com
http://wp.qmatteoq.com
Twitter: @qmatteoq
Mail: info@qmatteoq.com
Materiale su http://sdrv.ms/197qTIa

© 2012 Nokia. All rights reserved.
© 2012 Microsoft. All rights reserved.

More Related Content

PPT
Introduzione WPF
Ercole Palmeri
 
PPTX
Model-View-ViewModel con Windows Store Apps
codeblock
 
PDF
MVC and Struts 1
Tarin Gamberini
 
PDF
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Microsoft Mobile Developer
 
PDF
Slide Prelaurea. Alessandro Andreosè
guesta10af3
 
PPTX
Migliora il tuo codice con knockout.js
Andrea Dottor
 
PDF
Framework per la realizzazione di ria
Lorenzo Bortolotto
 
PDF
Model View Controller - Semplificare Il Codice E Minimizzare I Tempi
Marco Parenzan
 
Introduzione WPF
Ercole Palmeri
 
Model-View-ViewModel con Windows Store Apps
codeblock
 
MVC and Struts 1
Tarin Gamberini
 
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Microsoft Mobile Developer
 
Slide Prelaurea. Alessandro Andreosè
guesta10af3
 
Migliora il tuo codice con knockout.js
Andrea Dottor
 
Framework per la realizzazione di ria
Lorenzo Bortolotto
 
Model View Controller - Semplificare Il Codice E Minimizzare I Tempi
Marco Parenzan
 

Viewers also liked (11)

PPTX
m-v-vm @ UgiAlt.Net
Mauro Servienti
 
PDF
Dependency Injection in .NET
Remik Koczapski
 
PPTX
Dependency injection and inversion
chhabraravish23
 
PDF
Spring: usarlo conviene, ma usalo bene!
benfante
 
PPTX
Inversion of Control @ CD2008
Mauro Servienti
 
PPTX
Introduzione a MVVM e Caliburn.Micro
Massimo Bonanni
 
PPTX
Dependency Injection
Raffaele Fanizzi
 
PDF
IOC in Unity
Francesco Garavaglia
 
PDF
IOC in unity
Francesco Garavaglia
 
PPTX
Workshop - cqrs brief introduction
Francesco Garavaglia
 
PPTX
Design Pattern Architetturali - Dependency Injection
Riccardo Cardin
 
m-v-vm @ UgiAlt.Net
Mauro Servienti
 
Dependency Injection in .NET
Remik Koczapski
 
Dependency injection and inversion
chhabraravish23
 
Spring: usarlo conviene, ma usalo bene!
benfante
 
Inversion of Control @ CD2008
Mauro Servienti
 
Introduzione a MVVM e Caliburn.Micro
Massimo Bonanni
 
Dependency Injection
Raffaele Fanizzi
 
IOC in Unity
Francesco Garavaglia
 
IOC in unity
Francesco Garavaglia
 
Workshop - cqrs brief introduction
Francesco Garavaglia
 
Design Pattern Architetturali - Dependency Injection
Riccardo Cardin
 
Ad

Similar to Il pattern mvvm come strutturare al meglio il vostro progetto (20)

PPTX
Dal requisito all'implementazione @ CD2010
Mauro Servienti
 
PDF
WPF MVVM Toolkit
Alessandro Andreose'
 
PDF
Slide Mulesoft Meetup Milano #10.pdf
Florence Consulting
 
PPTX
Come sviluppare applicazioni cross device con HTML
Sinergia Totale
 
PPTX
Cert04 70-484 - essentials of developing windows store apps
DotNetCampus
 
PPTX
Meetup ASP.NET Core Angular
dotnetcode
 
PPTX
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
Dan Ardelean
 
PPTX
Rich client application: MVC4 + MVVM = Knockout.js
Giorgio Di Nardo
 
PPTX
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Codemotion
 
PPTX
UI Composition
DotNetMarche
 
PDF
Rich Internet Application
Marcello Teodori
 
PDF
Niccolò Becchi: Introduzione a GWT
firenze-gtug
 
PPTX
ASP.NET MVC: Andare oltre il 100% (Web@work)
Giorgio Di Nardo
 
PPTX
Silverlight m v-vm @ DotNetteria
Mauro Servienti
 
PDF
Accesso ai Dati in Windows Phone: Isolated Storage, Database e Data Sharing
Microsoft Mobile Developer
 
PPTX
m-v-vm @ dotNetMarche
Mauro Servienti
 
PPTX
OpenDevSecOps 2019 - Open devsecops un caso di studio
Emerasoft, solutions to collaborate
 
PDF
BPM e Cloud: la partnership ideale
emanuelemolteni
 
PPTX
MVVM senza fronzoli con Caliburn.Micro
Marco Amendola
 
PDF
Evoluzione del web development dalle cgi ai microservices
Daniele Mondello
 
Dal requisito all'implementazione @ CD2010
Mauro Servienti
 
WPF MVVM Toolkit
Alessandro Andreose'
 
Slide Mulesoft Meetup Milano #10.pdf
Florence Consulting
 
Come sviluppare applicazioni cross device con HTML
Sinergia Totale
 
Cert04 70-484 - essentials of developing windows store apps
DotNetCampus
 
Meetup ASP.NET Core Angular
dotnetcode
 
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
Dan Ardelean
 
Rich client application: MVC4 + MVVM = Knockout.js
Giorgio Di Nardo
 
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Codemotion
 
UI Composition
DotNetMarche
 
Rich Internet Application
Marcello Teodori
 
Niccolò Becchi: Introduzione a GWT
firenze-gtug
 
ASP.NET MVC: Andare oltre il 100% (Web@work)
Giorgio Di Nardo
 
Silverlight m v-vm @ DotNetteria
Mauro Servienti
 
Accesso ai Dati in Windows Phone: Isolated Storage, Database e Data Sharing
Microsoft Mobile Developer
 
m-v-vm @ dotNetMarche
Mauro Servienti
 
OpenDevSecOps 2019 - Open devsecops un caso di studio
Emerasoft, solutions to collaborate
 
BPM e Cloud: la partnership ideale
emanuelemolteni
 
MVVM senza fronzoli con Caliburn.Micro
Marco Amendola
 
Evoluzione del web development dalle cgi ai microservices
Daniele Mondello
 
Ad

More from Microsoft Mobile Developer (20)

PDF
Intro to Nokia X software platform 2.0 and tools
Microsoft Mobile Developer
 
PDF
Lumia App Labs: Lumia SensorCore SDK beta
Microsoft Mobile Developer
 
PDF
Nokia Asha from idea to app - Imaging
Microsoft Mobile Developer
 
PPTX
Healthcare apps for Nokia X and Nokia Asha
Microsoft Mobile Developer
 
PDF
Push notifications on Nokia X
Microsoft Mobile Developer
 
PDF
DIY Nokia Asha app usability studies
Microsoft Mobile Developer
 
PDF
Lessons learned from Nokia X UI reviews
Microsoft Mobile Developer
 
PDF
Location based services for Nokia X and Nokia Asha using Geo2tag
Microsoft Mobile Developer
 
PDF
HERE Maps for the Nokia X platform
Microsoft Mobile Developer
 
PDF
Nokia In-App Payment - UX considerations
Microsoft Mobile Developer
 
PDF
Introduction to Nokia Asha SDK 1.2 (beta)
Microsoft Mobile Developer
 
PDF
UX considerations when porting to Nokia X
Microsoft Mobile Developer
 
PDF
Kids' games and educational app design
Microsoft Mobile Developer
 
PDF
Nokia X: opportunities for developers
Microsoft Mobile Developer
 
PDF
Lumia App Labs: Nokia Imaging SDK 1.1
Microsoft Mobile Developer
 
PDF
Intro to Nokia X software platform and tools
Microsoft Mobile Developer
 
PDF
Lumia App Labs: Lessons learned from 50 windows phone 8 design consultations
Microsoft Mobile Developer
 
PDF
Windows Phone 8 speech: parliamo con la nostra app
Microsoft Mobile Developer
 
PDF
La pubblicazione di un'applicazione sullo store
Microsoft Mobile Developer
 
PDF
Lens app trasformare il telefono in una fotocamera
Microsoft Mobile Developer
 
Intro to Nokia X software platform 2.0 and tools
Microsoft Mobile Developer
 
Lumia App Labs: Lumia SensorCore SDK beta
Microsoft Mobile Developer
 
Nokia Asha from idea to app - Imaging
Microsoft Mobile Developer
 
Healthcare apps for Nokia X and Nokia Asha
Microsoft Mobile Developer
 
Push notifications on Nokia X
Microsoft Mobile Developer
 
DIY Nokia Asha app usability studies
Microsoft Mobile Developer
 
Lessons learned from Nokia X UI reviews
Microsoft Mobile Developer
 
Location based services for Nokia X and Nokia Asha using Geo2tag
Microsoft Mobile Developer
 
HERE Maps for the Nokia X platform
Microsoft Mobile Developer
 
Nokia In-App Payment - UX considerations
Microsoft Mobile Developer
 
Introduction to Nokia Asha SDK 1.2 (beta)
Microsoft Mobile Developer
 
UX considerations when porting to Nokia X
Microsoft Mobile Developer
 
Kids' games and educational app design
Microsoft Mobile Developer
 
Nokia X: opportunities for developers
Microsoft Mobile Developer
 
Lumia App Labs: Nokia Imaging SDK 1.1
Microsoft Mobile Developer
 
Intro to Nokia X software platform and tools
Microsoft Mobile Developer
 
Lumia App Labs: Lessons learned from 50 windows phone 8 design consultations
Microsoft Mobile Developer
 
Windows Phone 8 speech: parliamo con la nostra app
Microsoft Mobile Developer
 
La pubblicazione di un'applicazione sullo store
Microsoft Mobile Developer
 
Lens app trasformare il telefono in una fotocamera
Microsoft Mobile Developer
 

Il pattern mvvm come strutturare al meglio il vostro progetto

  • 1. ITALIAN WEBINAR #6 IL PATTERN MVVM Matteo Pagani Nokia Developer Champion Microsoft MVP – Windows Phone Development Software Engineer @ Funambol
  • 2. AGENDA • Il pattern MVVM • Toolkit e framework • Caliburn Micro © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 3. IL PATTERN MVVM © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 4. CODE BEHIND • • • • Nell’approccio abituale, la logica viene scritta nel code behind, insieme al codice per gestire le interazioni con l’interfaccia grafica E’ difficile separare i due contesti e identificare i problemi E’ difficile scrivere test, perché richiederebbe la simulazione delle interazioni con l’interfaccia grafica E’ difficile per un designer lavorare sulla grafica senza conoscere i dettagli implementativi © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 5. MODEL-VIEW-VIEWMODEL • • • Aiuta a separare logica e interfaccia utente, aiutando a mantenere leggibilità, testabilità, manutenibilità e «blendability» Prevede la separazione del codice in tre strati differenti Sfrutta le caratteristiche principali del linguaggio XAML, come DataContext e binding, per collegare i vari strati tra di loro © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 6. MODEL • • Rappresenta le entità e i servizi che recuperano i dati necessari all’applicazione in maniera “grezza”, senza avere dipendenze da come devono essere presentati Alcuni esempi: • La definizione delle entità base • Interazione con un database • Interazione con un servizio REST o WCF • Download di file dalla rete © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 7. VIEW • • • • Rappresenta l’interfaccia grafica dell’applicazione Contiene tutti i controlli, le animazioni e gli effetti visuali che definiscono la UI dell’applicazione. Il linguaggio di riferimento per le tecnologie Windows 8 e Windows Phone è lo XAML. Il code behind non deve contenere logica, ma al massimo codice necessario per gestire elementi dell’interfaccia (ad esempio, animazioni). © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 8. VIEW MODEL • • • • E’ il punto di contatto tra View e Model Si occupa di prendere i dati grezzi esposti dal Model e di elaborarli per essere presentati dalla View. Il ViewModel viene assegnato come DataContext della pagina: di conseguenza, tutti i controlli possono accedere alle proprietà del ViewModel Sfrutta il concetto di binding, per creare un canale bidirezionale di comunicazione tra le proprietà del ViewModel i e controlli presenti nello XAML. © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 9. © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 10. INOTIFYPROPERTYCHANGED • • • E’ l’interfaccia che deve essere implementata da qualsiasi classe che interagisce con la View (nello specifico del pattern, dai ViewModel) Consente di propagare le modifiche fatte alle proprietà di un oggetto ai controlli nella View collegati ObservableCollection<T> è un tipo particolare di collezione che implementa INotifyPropertyChanged © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 11. INOTIFYPROPERTYCHANGED Before public string Name { get; set; } After private string name; public string Name { get { return name; } set { name = value; NotifyOfPropertyChange(() => Name); } } XAML <TextBlock Text="{Binding Path=Name}" /> © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 12. COMMAND • • • I command sono funzioni che possono essere associate ad una azione su un controllo, grazie alla proprietà Command A differenza degli event handler, possono essere associati ad un controllo tramite binding Supportano la gestione dello stato del comando (abilitato o disabilitato), che si riflette in automatico sullo stato del controllo © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 13. COMMAND Code private ICommand _pinToStart; Il codice da public ICommand PinToStart eseguire { get { return _pinToStart ?? (_pinToStart = new RelayCommand( () => taskService.PinToStart(CurrentItem), () => canPin)); Il comando è } abilitato? } XAML <Button Content="Pin to start" Command="{Binding Path=PinToStart}" /> © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 14. © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 15. MVVM Demo © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 16. TOOLKIT E FRAMEWORK © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 17. TOOLKIT E FRAMEWORK • • • • MVVM è un pattern, non una libreria Le librerie disponibili non rappresentano MVVM, ma aiutano a implementare MVVM I toolkit offrono gli strumenti base per implementare il pattern e tendono ad essere indipendenti dalla piattaforma I framework offrono strumenti per gestire con il pattern MVVM i casi d’uso più comuni della piattaforma © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 18. MVVM LIGHT • • • Toolkit di Laurent Bugnion (http://mvvmlight.codeplex.com/) Compatibile con tutte le tecnologie XAML / C# (Silverlight, WPF, Windows Phone, Windows Store app) Alcune caratteristiche: • Classe base per i ViewModel con supporto a INotifyPropertyChanged • Classe base per implementare i Command • Messenger per scambiare messaggi tra i ViewModel © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 19. LE GRANDI DOMANDE • • • Come gestisco la navigazione da una pagina all’altra? Come gestisco il tombstoning? Come gestisco i deep link? © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 20. CALIBURN MICRO • • • Framework ideato da Rob Eisenberg (http://caliburnmicro.codeplex.com) Compatibile con tutte le tecnologie XAML / C# Feature specifiche per Windows Phone: • Supporto alla navigazione e al ciclo di vita delle pagine • Supporto al tombstoning • Supporto ai launcher & chooser • Supporto alla gestione di liste © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 21. CALIBURN MICRO • • • Supporta le naming convention: non è necessario effettuare il binding manualmente, è sufficiente seguire alcune convenzioni sui nomi delle proprietà o dei metodi Esempi: • MainView -> MainViewModel per avere il binding tra View e ViewModel • x:Name di un controllo TextBlock = nome di una proprietà nel ViewModel per il binding • x:Name di un controllo Button = nome di un metodo nel ViewModel per il command da eseguire E’ supportato comunque l’approccio tradizionale © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 22. CALIBURN MICRO Demo © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 23. CICLO DI VITA DELLA PAGINA • • E’ sufficiente ereditare il ViewModel dalla classe Screen per avere accesso agli eventi: • OnInitialize(), quando la pagina viene inizializzata la prima volta • OnActivate(), quando la pagina viene visualizzata (OnNavigatedTo) • OnDeactivate(), quando l’utente lascia la pagina corrente (OnNavigatedFrom) Approccio ViewModel first con supporto ai parametri © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 24. CALIBURN E IL CICLO DI VITA DELLA PAGINA Demo © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.
  • 25. Grazie! Blog: http://www.qmatteoq.com http://wp.qmatteoq.com Twitter: @qmatteoq Mail: [email protected] Materiale su http://sdrv.ms/197qTIa © 2012 Nokia. All rights reserved. © 2012 Microsoft. All rights reserved.