win8@work - windows 8 e mvvm
TRANSCRIPT
![Page 1: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/1.jpg)
Windows 8 e MVVM
Marco Amendolamarcoamendola.wordpress.com
blogs.ugidotnet.org/marcoamendola
@marcoamendola
![Page 2: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/2.jpg)
• MVVM: cosa cambia con Xaml su WinRT?
• Cos’è MVVM e perché si usa
• Caliburn.Micro per WinRT: struttura, vantaggi
tecnici e qualitativi
• Binding delle proprietà del ViewModel
• Avvio di azioni; azioni asincrone
• UI composition
• Unit test
Cosa vedremo?
![Page 3: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/3.jpg)
Windows 8 e MVVM
MVVM. Ancora?!
Ma è una fissazione!
![Page 4: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/4.jpg)
Windows 8 e MVVM
Quanto e come cambia
MVVM applicato a Xaml su
WinRT?
• Differenze dovute al markup
• Differenze dovute al runtime
• Differenze nel modello
applicativo
![Page 5: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/5.jpg)
Cos’è MVVM e perché si usa
E’ un pattern
Indica una impostazione
sperimentata e conveniente
L’uso in contesti Enterprise
ha dimostrato che facilita:
• Qualità
• Manutenibilità
• Modularità
![Page 6: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/6.jpg)
Cos’è MVVM e perché si usa
Strumenti per app. LOB
• MVVM, Caliburn.Micro, Fody
Rinforzo positivo di buone
pratiche e convenzioni
• Convention over
Configuration
• Inversion of Control
• Testabilità
![Page 7: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/7.jpg)
@Work
Struttura di una soluzione Caliburn.Micro
Windows 8 e MVVM
![Page 8: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/8.jpg)
Windows 8 e MVVM
Binding delle proprietà
• del DataModel: il classico
utilizzo per la presentazione
di dati
• dello Screen: pattern
Presentation Model (la View
replica lo stato del Model)
![Page 9: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/9.jpg)
@Work
Diversi tipi di binding delle proprietà
Convenzioni
Casi «pelosi» con proprietà non «bindabili»
Windows 8 e MVVM
![Page 10: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/10.jpg)
INotifyPropertyChanged?
Fody. E potete dimenticarvene.
Windows 8 e MVVM
![Page 11: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/11.jpg)
@Work
Test su notifica
Windows 8 e MVVM
![Page 12: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/12.jpg)
Cos’è allora il ViewModel?
Vista del Modello
o Modello della Vista
Windows 8 e MVVM
![Page 13: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/13.jpg)
Windows 8 e MVVM
Avvio di attività
• approccio tipico:
Commands.
• Caliburn.Micro: convenzioni.
E se non basta: messaggi.
![Page 14: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/14.jpg)
@Work
Avvio di azioni con Caliburn.Micro
Convenzioni e ActionMessages
Test sulle funzioni «guard»
Windows 8 e MVVM
![Page 15: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/15.jpg)
Windows 8 e MVVM
Azioni asincrone
• Async/Await risolve
elegantemente un problema
complesso (“bagno di
sangue”)
• Percorso sequenziale
visibile, ma composto da
passi potenzialmente
asincroni e di lunga durata
![Page 16: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/16.jpg)
@Work
Azioni asincrone
Gestione errori
Windows 8 e MVVM
![Page 17: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/17.jpg)
Windows 8 e MVVM
UI Composition
• “Subroutine” per l’interfaccia
utente
• Templating
• VM esposti da proprietà
modificate a runtime
![Page 18: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/18.jpg)
Windows 8 e MVVM
UI Composition
• Occorre gestire il ciclo di vita
dei View Model
• Appication Model
![Page 19: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/19.jpg)
@Work
UI Composition e Application Model
Windows 8 e MVVM
![Page 20: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/20.jpg)
• MVVM: cosa cambia con Xaml su WinRT?
• Cos’è MVVM e perché si usa
• Caliburn.Micro per WinRT: struttura, vantaggi
tecnici e qualitativi
• Binding delle proprietà del ViewModel
• Avvio di azioni; azioni asincrone
• UI composition
• Unit test
Cosa abbiamo visto**se non ho sforato i tempi
![Page 21: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/21.jpg)
Windows 8 e MVVM
Domande?
![Page 22: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/22.jpg)
Link utili
caliburnmicro.codeplex.com
github.com/SimonCropp/Fody
![Page 23: Win8@work - Windows 8 e MVVM](https://reader033.vdocuments.net/reader033/viewer/2022060200/5598e41c1a28aba57d8b4732/html5/thumbnails/23.jpg)
Grazie agli sponsor