SlideShare une entreprise Scribd logo
Le 14/11/2011




   ATELIERS
WPF - MVVM
Plan de la présentation
 • I- Partie Théorique
    • Introduction de WPF
    • WPF vs WinForms
    • Avantages / Inconvénients WPF
    • Problèmes de développement
    • Pattern de conception MVVM

 • II-   Partie Pratique
    •    WPF et MVVM
    •    Introduction du MVVM Light Toolkit
    •    MVVM Light Toolkit in WPF

 • Conclusion
PARTIE THEORIQUE
Introduction

• Arrivée Windows VISTA
    Au niveau de la communication (WCF)
    Au niveau de l’affichage (WPF)
    Le systéme de fichiers




                                           4
Carte d’identité




                   5
WPF VS Winforms
Exemple d’applications




                         7
Avantages WPF


• Utilisation du GPU
• Séparation code / design
Avantages WPF

•   Graphismes vectoriels
•   Transparence par pixel
•   Animations
•   Adaptation à la résolution




                            • Support du data binding
Inconvénients WPF


• Not Freeware
• Manque d’interopérabilité
• Tout est à refaire

                 ?
Structure du projet

                Projet WPF


       N                     `


                       …
                                 11
Outils & Matériel nécessaires

                             •    Outils Microsoft pour les
                                  développeurs et les designers
                               Avec XAML, les développeurs
                             • Programmation déclarative avec
                                 et les designers peuvent
                               XAML
                                 affiner leur collaboration
Les designers conçoivent les UI                              les développeurs ajoutent la logique métier
PROBLÈMES DÉVELOPPEMENT
Problèmes typiques de développement

• Code étroitement couplé qui est difficile à
  maintenir et à étendre.
• Il peut être difficile de séparer l‘état, la
  logique et la présentation UI.
• Il est difficile de tester l'état et la logique UI.
• Le concepteur est lié aux composants UI
  écrits par le développeur.
PATTERNS DE CONCEPTION
Solution …??

• Code étroitement couplé qui est difficile à
  maintenir et à étendre.
• Il peut être difficile de séparer l‘état et la
  logique UI de la présentation UI.
• Il est difficile de tester l'état et la logique UI.
• Le concepteur est lié aux composants UI
  écrits par le développeur.
MVvM
MVC


      MVP
MVC
Model – View – Controller
   • Considéré comme le premier motif
     pour séparer l‘UI, les données et la
     logique métier
   • Controller gère toute logique, y
     compris les événements souris et
     clavier
MVP
Model – View – Presenter
   • Variation du MVC
   • Adapté pour l’UI qui gère mieux les
     événements souris et clavier
   • Presenter dépend de la View
MVvM

Model – Vos données
   • Entities
   • Service Proxy
   • POCO
   • Données XML
MVvM


View – UI
   XAML (WPF)
MVvM

ViewModel – Le modèle de la vue
    •Etats
    •Opérations
    •Ne dépends pas de la View
Data Binding
QUAND UTILISER QUOI?
• MVC
  – Lien View- Reste Programme pas toujours
    disponible (Microsoft ASP.NET MVC).


• MVP
  – Liaison via un DataContext pas possible(WinForms)


• MVvM
  – Liaison via un DataContext est possible (WPF)
MVvM
 Pas de code-behind dans XAML

 ViewModel passé comme DataContext pour UI

 ViewModel et Model ne doivent pas accéder à
 n'importe quel composant ou objet UI

 ViewModel hérite de INotifyPropertyChanged.
  – source de liaison

 ViewModel encapsule Model
PARTIE PRATIQUE
WPF ET MVVM
MVVM LIGHT TOOLKIT
Pourquoi ?

 • Accélérer le développement d'applications MVVM
    – WPF
    – Silverlight
    – Windows Phone.


 • Séparer la View du Model
 • Créer des applications testables
Composition

  Une dll « GalaSoft.MvvmLight.dll »

    RelayCommand – RelayCommand<T>
    Messenger
    ViewModelBase
MVVM LIGHT IN WPF
Conclusion
      Faciliter la réalisation d'une application WPF

 •   Abstraction de la vue
 •   Réduction du code dans le code-behind
 •   Classes Vue-Modèle testables
 •   Amélioration du workflow dev/ designer




                                                       32
WPF MVVM

Contenu connexe

Tendances

Wpf et Silverlight
Wpf et SilverlightWpf et Silverlight
Wpf et Silverlight
Simon Robic
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvc
Madridal
 
Tech days 2012 mvvm de a à z
Tech days 2012   mvvm de a à zTech days 2012   mvvm de a à z
Tech days 2012 mvvm de a à z
Arnaud Auroux
 
Cours wpf avancé
Cours wpf avancéCours wpf avancé
Cours wpf avancé
lucas zientek
 
les style d'architecture
les style d'architecture les style d'architecture
les style d'architecture
Mouna Maazoun
 
M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4
CERTyou Formation
 
2 ModéLe Mvc
2 ModéLe Mvc2 ModéLe Mvc
Model view-view model (mvvm)
Model view-view model (mvvm)Model view-view model (mvvm)
Model view-view model (mvvm)
Ghassen Smida
 
Retour d'experience projet AngularJS
Retour d'experience projet AngularJSRetour d'experience projet AngularJS
Retour d'experience projet AngularJS
∞ François CHERPION ∞
 
jQuery vs AngularJS
jQuery vs AngularJS jQuery vs AngularJS
jQuery vs AngularJS
Safwen Chibeni
 
Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"
Nazih Heni
 
Présentation de WCF
Présentation de WCFPrésentation de WCF
Présentation de WCF
Romain Coste
 
De A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeDe A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicative
Microsoft
 
EcmaScript
EcmaScriptEcmaScript
EcmaScript
Dagbouj Hatem
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)
Yacine Rezgui
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
RomainKuzniak
 
Hello AngularJS - Back to the future
Hello AngularJS - Back to the futureHello AngularJS - Back to the future
Hello AngularJS - Back to the future
Ouadie LAHDIOUI
 
comprendre angularJS en 10 minutes
comprendre angularJS en 10 minutescomprendre angularJS en 10 minutes
comprendre angularJS en 10 minutes
David Bo
 
Angluars js
Angluars jsAngluars js
Angluars js
RYMAA
 
J2eeintro
J2eeintroJ2eeintro
J2eeintro
medbmb
 

Tendances (20)

Wpf et Silverlight
Wpf et SilverlightWpf et Silverlight
Wpf et Silverlight
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvc
 
Tech days 2012 mvvm de a à z
Tech days 2012   mvvm de a à zTech days 2012   mvvm de a à z
Tech days 2012 mvvm de a à z
 
Cours wpf avancé
Cours wpf avancéCours wpf avancé
Cours wpf avancé
 
les style d'architecture
les style d'architecture les style d'architecture
les style d'architecture
 
M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4
 
2 ModéLe Mvc
2 ModéLe Mvc2 ModéLe Mvc
2 ModéLe Mvc
 
Model view-view model (mvvm)
Model view-view model (mvvm)Model view-view model (mvvm)
Model view-view model (mvvm)
 
Retour d'experience projet AngularJS
Retour d'experience projet AngularJSRetour d'experience projet AngularJS
Retour d'experience projet AngularJS
 
jQuery vs AngularJS
jQuery vs AngularJS jQuery vs AngularJS
jQuery vs AngularJS
 
Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"
 
Présentation de WCF
Présentation de WCFPrésentation de WCF
Présentation de WCF
 
De A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeDe A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicative
 
EcmaScript
EcmaScriptEcmaScript
EcmaScript
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 
Hello AngularJS - Back to the future
Hello AngularJS - Back to the futureHello AngularJS - Back to the future
Hello AngularJS - Back to the future
 
comprendre angularJS en 10 minutes
comprendre angularJS en 10 minutescomprendre angularJS en 10 minutes
comprendre angularJS en 10 minutes
 
Angluars js
Angluars jsAngluars js
Angluars js
 
J2eeintro
J2eeintroJ2eeintro
J2eeintro
 

En vedette

MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )
Ahmed Emad
 
Therapie par l’urine urinotherapie - amaroli - medecine ayurvedique - histo...
Therapie par l’urine   urinotherapie - amaroli - medecine ayurvedique - histo...Therapie par l’urine   urinotherapie - amaroli - medecine ayurvedique - histo...
Therapie par l’urine urinotherapie - amaroli - medecine ayurvedique - histo...
Elsa von Licy
 
C# Fundamentals for Absolute Beginners
C# Fundamentals for Absolute BeginnersC# Fundamentals for Absolute Beginners
C# Fundamentals for Absolute Beginners
Hamida Rebai Trabelsi
 
MVVM
MVVMMVVM
MVVM - Model View ViewModel
MVVM - Model View ViewModelMVVM - Model View ViewModel
MVVM - Model View ViewModel
Dareen Alhiyari
 
Accéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetAccéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.Net
Frédéric Vandenbriele
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
Hedi Riahi
 
Presentation pfe 2012
Presentation pfe 2012Presentation pfe 2012
Presentation pfe 2012
Sellami Ahmed
 
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Stéphanie Hertrich
 
Diapo PFE
Diapo PFEDiapo PFE
Diapo PFE
bhar amenallah
 
Pratiques avancées de yoga & de Tantra - Yogani
Pratiques avancées de yoga & de Tantra - YoganiPratiques avancées de yoga & de Tantra - Yogani
Pratiques avancées de yoga & de Tantra - Yogani
Guillaume Michigan
 
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm
 
El email
El emailEl email
El email
guadalupebatres
 
Tratamiento térmico
Tratamiento térmicoTratamiento térmico
Tratamiento térmico
Miguel Cajiga
 
Objectifs journée technique vie du sol
Objectifs journée technique vie du solObjectifs journée technique vie du sol
Objectifs journée technique vie du sol
Agriculture Nouvelle
 
Energía eléctric ardyh (1)
Energía eléctric ardyh (1)Energía eléctric ardyh (1)
Energía eléctric ardyh (1)
mario98campillo
 
Situación, de archipielago juan fernandez
Situación, de archipielago juan fernandezSituación, de archipielago juan fernandez
Situación, de archipielago juan fernandez
Paloma Vásquez
 
Psicologia
PsicologiaPsicologia
Psicologia
22381829
 
Bitacora maestros simona duue
Bitacora maestros simona duueBitacora maestros simona duue
Bitacora maestros simona duue
Cristian Rios Morales
 

En vedette (20)

MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )
 
Therapie par l’urine urinotherapie - amaroli - medecine ayurvedique - histo...
Therapie par l’urine   urinotherapie - amaroli - medecine ayurvedique - histo...Therapie par l’urine   urinotherapie - amaroli - medecine ayurvedique - histo...
Therapie par l’urine urinotherapie - amaroli - medecine ayurvedique - histo...
 
C# Fundamentals for Absolute Beginners
C# Fundamentals for Absolute BeginnersC# Fundamentals for Absolute Beginners
C# Fundamentals for Absolute Beginners
 
MVVM
MVVMMVVM
MVVM
 
MVVM - Model View ViewModel
MVVM - Model View ViewModelMVVM - Model View ViewModel
MVVM - Model View ViewModel
 
Accéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetAccéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.Net
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 
Presentation pfe 2012
Presentation pfe 2012Presentation pfe 2012
Presentation pfe 2012
 
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
 
Diapo PFE
Diapo PFEDiapo PFE
Diapo PFE
 
Pratiques avancées de yoga & de Tantra - Yogani
Pratiques avancées de yoga & de Tantra - YoganiPratiques avancées de yoga & de Tantra - Yogani
Pratiques avancées de yoga & de Tantra - Yogani
 
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
 
pictures
picturespictures
pictures
 
El email
El emailEl email
El email
 
Tratamiento térmico
Tratamiento térmicoTratamiento térmico
Tratamiento térmico
 
Objectifs journée technique vie du sol
Objectifs journée technique vie du solObjectifs journée technique vie du sol
Objectifs journée technique vie du sol
 
Energía eléctric ardyh (1)
Energía eléctric ardyh (1)Energía eléctric ardyh (1)
Energía eléctric ardyh (1)
 
Situación, de archipielago juan fernandez
Situación, de archipielago juan fernandezSituación, de archipielago juan fernandez
Situación, de archipielago juan fernandez
 
Psicologia
PsicologiaPsicologia
Psicologia
 
Bitacora maestros simona duue
Bitacora maestros simona duueBitacora maestros simona duue
Bitacora maestros simona duue
 

Similaire à WPF MVVM

Programmation Web developpement dynamique
Programmation Web developpement dynamiqueProgrammation Web developpement dynamique
Programmation Web developpement dynamique
YounesOuladSayad1
 
developpement web framework cms developpement brute
developpement web framework cms developpement brutedeveloppement web framework cms developpement brute
developpement web framework cms developpement brute
YounesOuladSayad1
 
Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...
Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...
Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...
Microsoft
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie
LeClubQualiteLogicielle
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Jasmine Conseil
 
[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec Xamarin[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec Xamarin
Cellenza
 
Silverlight
SilverlightSilverlight
Silverlight
Soumow Dollon
 
Xamarin + mvvm cross
Xamarin + mvvm crossXamarin + mvvm cross
Xamarin + mvvm cross
Patrick FINKEN
 
HTML5 & SilverLight 5
HTML5 & SilverLight 5HTML5 & SilverLight 5
HTML5 & SilverLight 5
Frédéric Harper
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
Calculus System SARL
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
Calculus System SARL
 
Formation mcsd windows store apps c#
Formation mcsd windows store apps c#Formation mcsd windows store apps c#
Formation mcsd windows store apps c#
EGILIA Learning
 
Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010
MD DAY
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
Microsoft
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
Lilia Sfaxi
 
Symfony
SymfonySymfony
Symfony
YAZIDI Imran
 
Déploiement d’applications
Déploiement d’applicationsDéploiement d’applications
Déploiement d’applications
Mohammed Jaafar
 
HTML5 W3C Conference Euratechnologie
HTML5 W3C Conference EuratechnologieHTML5 W3C Conference Euratechnologie
HTML5 W3C Conference Euratechnologie
wyggio
 

Similaire à WPF MVVM (20)

Programmation Web developpement dynamique
Programmation Web developpement dynamiqueProgrammation Web developpement dynamique
Programmation Web developpement dynamique
 
developpement web framework cms developpement brute
developpement web framework cms developpement brutedeveloppement web framework cms developpement brute
developpement web framework cms developpement brute
 
Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...
Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...
Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec Xamarin[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec Xamarin
 
Gwt final
Gwt finalGwt final
Gwt final
 
Silverlight
SilverlightSilverlight
Silverlight
 
Xamarin + mvvm cross
Xamarin + mvvm crossXamarin + mvvm cross
Xamarin + mvvm cross
 
HTML5 & SilverLight 5
HTML5 & SilverLight 5HTML5 & SilverLight 5
HTML5 & SilverLight 5
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
Formation mcsd windows store apps c#
Formation mcsd windows store apps c#Formation mcsd windows store apps c#
Formation mcsd windows store apps c#
 
Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
 
RIA
RIARIA
RIA
 
Symfony
SymfonySymfony
Symfony
 
Déploiement d’applications
Déploiement d’applicationsDéploiement d’applications
Déploiement d’applications
 
HTML5 W3C Conference Euratechnologie
HTML5 W3C Conference EuratechnologieHTML5 W3C Conference Euratechnologie
HTML5 W3C Conference Euratechnologie
 

Plus de Slimen Belhaj Ali (19)

Solution générique pour la résolution des problèmes statiques de tournées de ...
Solution générique pour la résolution des problèmes statiques de tournées de ...Solution générique pour la résolution des problèmes statiques de tournées de ...
Solution générique pour la résolution des problèmes statiques de tournées de ...
 
BPMN,jBPM,BPEL
BPMN,jBPM,BPELBPMN,jBPM,BPEL
BPMN,jBPM,BPEL
 
Websphere
WebsphereWebsphere
Websphere
 
Sécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-SecuritySécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-Security
 
JasperReport
JasperReportJasperReport
JasperReport
 
ERP Universitaire
ERP UniversitaireERP Universitaire
ERP Universitaire
 
JSF 2.0
JSF 2.0JSF 2.0
JSF 2.0
 
Tutorial
TutorialTutorial
Tutorial
 
Spring security
Spring securitySpring security
Spring security
 
Spring mvc 3.0 web flow
Spring mvc 3.0 web flowSpring mvc 3.0 web flow
Spring mvc 3.0 web flow
 
Share point 2010
Share point 2010Share point 2010
Share point 2010
 
TFS
TFSTFS
TFS
 
objective C
objective Cobjective C
objective C
 
Android
AndroidAndroid
Android
 
Hibernate 3
Hibernate 3Hibernate 3
Hibernate 3
 
Jboss Seam
Jboss SeamJboss Seam
Jboss Seam
 
Google appengine&guice
Google appengine&guiceGoogle appengine&guice
Google appengine&guice
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
Administration glassfish 3
Administration glassfish 3Administration glassfish 3
Administration glassfish 3
 

WPF MVVM

  • 1. Le 14/11/2011 ATELIERS WPF - MVVM
  • 2. Plan de la présentation • I- Partie Théorique • Introduction de WPF • WPF vs WinForms • Avantages / Inconvénients WPF • Problèmes de développement • Pattern de conception MVVM • II- Partie Pratique • WPF et MVVM • Introduction du MVVM Light Toolkit • MVVM Light Toolkit in WPF • Conclusion
  • 4. Introduction • Arrivée Windows VISTA Au niveau de la communication (WCF) Au niveau de l’affichage (WPF) Le systéme de fichiers 4
  • 8. Avantages WPF • Utilisation du GPU • Séparation code / design
  • 9. Avantages WPF • Graphismes vectoriels • Transparence par pixel • Animations • Adaptation à la résolution • Support du data binding
  • 10. Inconvénients WPF • Not Freeware • Manque d’interopérabilité • Tout est à refaire ?
  • 11. Structure du projet Projet WPF N `     … 11
  • 12. Outils & Matériel nécessaires • Outils Microsoft pour les développeurs et les designers Avec XAML, les développeurs • Programmation déclarative avec et les designers peuvent XAML affiner leur collaboration Les designers conçoivent les UI les développeurs ajoutent la logique métier
  • 14. Problèmes typiques de développement • Code étroitement couplé qui est difficile à maintenir et à étendre. • Il peut être difficile de séparer l‘état, la logique et la présentation UI. • Il est difficile de tester l'état et la logique UI. • Le concepteur est lié aux composants UI écrits par le développeur.
  • 16. Solution …?? • Code étroitement couplé qui est difficile à maintenir et à étendre. • Il peut être difficile de séparer l‘état et la logique UI de la présentation UI. • Il est difficile de tester l'état et la logique UI. • Le concepteur est lié aux composants UI écrits par le développeur.
  • 17. MVvM MVC MVP
  • 18. MVC Model – View – Controller • Considéré comme le premier motif pour séparer l‘UI, les données et la logique métier • Controller gère toute logique, y compris les événements souris et clavier
  • 19. MVP Model – View – Presenter • Variation du MVC • Adapté pour l’UI qui gère mieux les événements souris et clavier • Presenter dépend de la View
  • 20. MVvM Model – Vos données • Entities • Service Proxy • POCO • Données XML
  • 21. MVvM View – UI XAML (WPF)
  • 22. MVvM ViewModel – Le modèle de la vue •Etats •Opérations •Ne dépends pas de la View
  • 24. QUAND UTILISER QUOI? • MVC – Lien View- Reste Programme pas toujours disponible (Microsoft ASP.NET MVC). • MVP – Liaison via un DataContext pas possible(WinForms) • MVvM – Liaison via un DataContext est possible (WPF)
  • 25. MVvM Pas de code-behind dans XAML ViewModel passé comme DataContext pour UI ViewModel et Model ne doivent pas accéder à n'importe quel composant ou objet UI ViewModel hérite de INotifyPropertyChanged. – source de liaison ViewModel encapsule Model
  • 29. Pourquoi ? • Accélérer le développement d'applications MVVM – WPF – Silverlight – Windows Phone. • Séparer la View du Model • Créer des applications testables
  • 30. Composition Une dll « GalaSoft.MvvmLight.dll » RelayCommand – RelayCommand<T> Messenger ViewModelBase
  • 32. Conclusion Faciliter la réalisation d'une application WPF • Abstraction de la vue • Réduction du code dans le code-behind • Classes Vue-Modèle testables • Amélioration du workflow dev/ designer 32

Notes de l'éditeur

  1. C&apos;est beau, ça tourne, c’est tres attirant aussi ... La FNAC vous propose un guide d&apos;achat interactif en WPF.
  2. Un projet« wpf », contient l’ensemble des ressources de l’application : des fichiers XAML décrivant l’interface utilisateur, Le XAML (eXtensible Application MarkupLanguage) est un langage déclaratif basé sur la syntaxe du XML. Il permet de définir des objets dynamiquement grâce aux balises (équivalent des classes) et aux attributs (équivalents aux propriétés) XAML.Un projet« wpf », contient l’ensemble des ressources de l’application : des fichiers XAML décrivant l’interface utilisateur, Le XAML est un langage déclaratif basé sur la syntaxe du XML. Il permet de définir dynamiquement des objets grâce aux balises (équivalent des classes) et aux attributs (équivalents aux propriétés). des fichiers C# contenant le code behind encapsulant la logique métier de l’applicationet des différentes ressources telles que composants additionnels, fichiers de données, images ou vidéos, etc…
  3. Tout d&apos;abord, jetons le regard à certains problèmes typiques de développement qui nous rencontrent souvent.
  4.  Premièrement, il ya une tendance pour les logiciels de devenir étroitement couplés, ce qui rend difficile l&apos;entretien et l&apos;extension.Il est également très facile de combiner l&apos;état, la logique et la présentation dans les UICes deux problèmes se combinent, avec d&apos;autres, pour rendre le code très difficile à tester.Il rend également difficile pour les concepteurs de travailler comme ils sont liés à des contrôles d&apos;interface utilisateur écrit par le développeur.
  5.  Nous devons avoir une solution qui encourage la séparation des préoccupationsfournit un modèle très naturel pour le développement en XAML.Tout cela augmente la testabilité et aide également le workflow développeur concepteur.
  6. Maintenant comme nous avons pris un bref regard sur le type des problèmes MVVM, nous allons avoir un aperçu du modèle lui-même.
  7. .
  8. .