Rappels des fondamentaux des applications WPF
- Les concepts fondamentaux du XAML.
- Le DataBinding.
- Techniques de validations avec affichage des erreurs.
- Intérêt des commandes versus événements routés.
- Simplifier les commandes avec la classe RelayCommand.
Travaux pratiques
Analyse d'une application WPF typique liée à des données avec validations, sans
architecture MVVM.
Intérêt de l'architecture MVVM
- Règles de conception SOLID et SOC.
- Modèles de conception courants (Design Patterns, Modèle en couches, MVC, MVP, Repository et Locator).
- L'architecture MVVM : découpage et interactions entre les différentes parties.
Travaux pratiques
Analyse des étapes de transformation d'une application WPF simple liée à des données avec du code-behind vers une architecture MVVM.
Refactoring d'une application type
- Analyse d'une application type réalisée en code-behind (sans MVVM), avec liaisons de données.
- Organisation et création des ViewModels.
- Intégration des ViewModels aux vues de manière déclarative et par code.
- Intégration des commandes aux ViewModels et aux vues, avec gestion de la disponibilité de leur exécution et paramétrage.
Travaux pratiques
Remplacement progressif du code-behind des vues de l'application par des ViewModels dérivés d'une classe BaseViewModel, avec intégration des différents types de commandes.
Outils et patterns liés à MVVM
- Analyse des problématiques de couplage entre classes concrètes.
- Principe des patterns DI (Injection de Dépendances) et du Locator.
- Principe et mise en oeuvre de tests unitaires.
- Le Mocking pour faciliter les tests.
Travaux pratiques
Réalisation d'une classe ViewModelLocator pour gérer les ViewModels et les services avec injection de dépendances. Création d'un projet de tests unitaires sur les ViewModels.
Mise en oeuvre de MS MVVM Toolkit
- Aperçu comparatif des outils et des principaux Frameworks MVVM disponibles.
- MS MVVM Toolkit : présentation des fonctionnalités et installation.
- Principe et mise en œuvre de l'IOC avec le système d'injection de dépendances.
- Intérêt et mise en oeuvre de la classe Messenger pour faire communiquer les ViewModels.
Travaux pratiques
Amélioration de l'application avec MS MVVM Toolkit grâce aux outils présentés
(ObservableObject, Messenger et IServiceProvider).