RDA 209 : WPF Toolkit et bonnes pratiques 8 Février 2010 Julien CORIOLAND Consultant Access It Yoann VUE Consultant Access It Julien date
Access It en quelques mots… Consulting/expertise, réalisation (projet /assistance technique) et formation (CPLS) sur les technologies Microsoft Haut niveau de certification 2 agences à Lille et Paris, couverture nationale Centre des Usages pour la région Nord 3 grands domaines d’expertise technologique Plateforme applicative : SharePoint, SQL Server & BI, BizTalk .Net : architecture, Framework & langages, RIA/RDA (Silverlight, WPF, Surface), industrialisation/ALM (TFS/VSTS)… Infrastructure : poste de travail, serveurs, virtualisation, messagerie, annuaire… http://www.access-it.fr Julien date
Agenda Ce qu’il ne faudrait pas faire Rappels sur WPF/Silverlight Design Patterns Injection de dépendances Toolkits / Frameworks remarquables Julien date
Démo WPF à la mode Winforms Yoann date
Quelques rappels sur WPF / Silverlight Binding : Processus de liaison entre une donnée et l’interface graphique. DependencyObject / DependencyProperty Command : Mécanisme d’entrée permettant d’exécuter du code sur une action utilisateur. Edition et Validation : Mécanisme permettant l’édition de données et la mise en place de règle de validation sur les formulaires. Yoann ICommand : RoutedCommand, SimpleCommand, DelegateCommand IEditableObject IDataErrorInfo date
Quelques rappels sur WPF / Silverlight Dependency Object : classe de base permettant d’utiliser le système de propriété WPF / Silverlight Dependency Property : propriété d’une classe sur laquelle on peut effectuer du binding, récupérer des notifications de changement, définir des métadonnées… Attached Property : Dependency Property déclarée par une classe et applicable sur une autre classe. date
Model – View – View Model Créé pour WPF/Silverlight Dérivé de MVC / MVP Objectif : Découplage vue / métier Organisation du code XAML Code ? Binding Command Notification Changements Yoann View Model Model Etats et Opérations date
Model – View - ViewModel Démo Model – View - ViewModel Yoann date
Attached Behavior Utilise les Attached Properties Ajoute un comportement sur un Dependency Object Exemple : Attached Command Permet d’exécuter une commande lorsqu’un évènement est levé Traitement des évènements dans le ViewModel : Plus de code-behind ! Julien date
Démo Attached Behavior Julien date
Injection de dépendances Objectifs: Problématique d’applications complexes : Plusieurs parties Assemblages tiers Différents services… Changer de dépendance en fonction du contexte d’exécution Couplage faible Tester sans dépendance (MOCK), données en design-time…. Julien date
Injection de dépendances Une solution possible : Unity Framework Utilise des contrats (interfaces) Plus de travail sur implémentations concrètes Mapping Contrat / Implémentation On n’instancie pas les composants : Plus de new() ! Julien date
Injection de dépendances Conteneur Unity Racine RegisterType<IMessageSender> RegisterType<ICustomerService> Conteneur Enfant # 1 Conteneur Enfant # 2 RegisterInstance<IOrderService> Julien Conteneur Enfant # 3 Resolve<IMessageSender> Resolve<IOrderService> date
Injection de dépendances avec Unity Démo Injection de dépendances avec Unity
MvvmLight Structure et modèle de projet MVVM pour WPF/Silverlight Intégré à Visual Studio et Expression Blend Des snippets pour Visual Studio Disponible sur CodePlex : http://mvvmlight.codeplex.com/ Yoann date
MvvmLight Une classe de base pour les ViewModels INotifyPropertyChanged Implémentation des commandes Implémentation du Messenger Communication au sein de l’application Envoi de messages entre instances (Commandes, MessageBox, PropertyChanged) Attached Behavior « EventToCommand » Yoann date
Utilisation de Mvvm Light Démo Utilisation de Mvvm Light Yoann date
Cinch Framework Création d’applications WPF basées sur MVVM Disponible sur CodePlex : http://cinch.codeplex.com ViewModels de base pour l’édition et la validation Utilitaires pour le pattern Observable Services basés sur Unity (MessageBox, OpenFileDialog…) Julien date
Cinch Framework Commandes Règles de validation depuis le ViewModel Simple, Expression Régulière… Contrôle du cycle de vie de l’application Exécution de commande Julien date
Utilisation de Cinch Framework Démo Utilisation de Cinch Framework Julien date
WPF/Silverlight Toolkits Ensemble de contrôles et outils réutilisables Disponibles sur CodePlex : http://silverlight.codeplex.com http://wpf.codeplex.com Intégration fréquente au .NET Framework Silverlight : Themes, Charts, DatePicker, WrapPanel, DataGrid, Viewbox… WPF: Charts, Visual State Manager , DatePicker, Calendar, DataGrid Yoann date
WPF et Silverlight Toolkit Démo WPF et Silverlight Toolkit Yoann et Julien date
Synthèse WPF / Silverlight sont des technologies montantes Déjà beaucoup d’outils et patterns adaptés Tout de suite partir sur de bonnes bases Ne pas réinventer la roue ! Julien date
Questions ? date
Quelques ressources… Liens: WPF Toolkit: http://wpf.codeplex.com Silverlight Toolkit: http://silverlight.codeplex.com Cinch Framework: http://cinch.codeplex.com MvvmLight: http://mvvmlight.codeplex.com Pattern MVVM : http://msdn.microsoft.com/en-us/magazine/dd419663.aspx Frameworks MVVM : http://www.japf.fr/silverlight/mvvm/index.html Blogs: http://blogs.developeur.org/tom http://www.simonferquel.net http://blogs.dotnet-france/julienc http://blog.galasoft.ch/