TechDays 2012 – Nouveautés WPF 4.5

Une version mineure WPF, mais pour quoi faire ? Certainement pour améliorer une version 4 encore fébrile...

    

Cette chronique ne sera pas très longue... En effet, je vais vous présenter les nouveautés annoncées sur le framework WPF4.5, version mineure du framework de présentation phare de Microsoft.

Nouveautés autour du Binding
Une nouvelle propriété « Delay » fait son apparition. Elle va permettre de différer le chargement des données liées au contrôle en question. Cette fonctionnalité est idéale pour éviter un chargement intempestif lors d’un scroll sur une liste d’items qui charge un détail de l’élément sélectionné. Lorsque l'utilisateur s'immobilise le temps de ce « Delay » sur un item précis, alors son chargement aura lieu.

Le binding sur les propriétés statiques est rendue possible directement dans le xaml. Ce n’était pas possible avant sans implémenter un peu de code à base de MarkupExtensions.
Microsoft nous offre une nouvelle méthode de vérification du DataContext bindé à une propriété. Dans l’éventualité où la référence à la donnée bindée ne soit plus disponible, plutôt que crasher l’interface, il convient de tester si le DataContext n’est pas « disconnected ». Cela dit, en architecture MVVM le cas ne devrait pas arriver.

Nouveautés autour des contrôles
QAT (Quick Access Toolbar) devient enfin disponible, à nous le beau ruban Office dans nos applications WPF !

Le VirtualizingStackPanel fait son apparition. Il s’agit d’un StackPanel enrichit d’un cache configurable de préchargement. On évite alors de tout charger et on indique la fourchette de preloading soit en pixels, soit en items.
 

Nouveautés autour des données
L’interface INotifyDataErrorInfo va nous permettre de réaliser de la validation asynchrone.

La fonctionnalité de LiveShaping rafraichit enfin uniquement le contrôle graphique CollectionView lorsque sa collection bindée change. On évite alors le rendering global de l’application. Deux propriétés sont associées à cette fonctionnalité : le LiveSorting et le LiveGrouping.

Nouveautés autour des outils
Il devient maintenant possible d’accèder aux collections d’objets depuis des Threads non-UI.

Le pattern des WeakEvents est grandement simplifié ce qui devrait ravir les fan de libération mémoire.

Le dispatcher a été amélioré avec plusieurs nouvelles méthodes et les events sont équipés des MarkupExtensions.
 

Et côté performances ?
Les ItemControls et le temps de démarrage d’une application WPF ont été améliorés ! Cela rejoint la volonté de Microsoft de rendre une interface graphique toujours plus fluide.

Une nouvelle propriété IsVirtualizingWhenGrouping fait son apparition sur les listes d’éléments groupés afin d’améliorer radicalement les performances de chargement.

Globalement, on notera un effort pour améliorer le rendu WPF dans VisualStudio, mais Microsoft Blend reste toujours la référence pour la vraie conception graphique.
 

En synthèse
Je n'ai pour ma part rien trouvé de révolutionnaire si ce n'est une amélioration générale du framework. Mais je pense que l'objectif ici est de faire vivre WPF qui obtient déjà l'adhésion de nombreux développeurs. La communauté ne peut donc que se réjouir de voir des petites améliorations enrichirent régulièrement leur outil.

Ces différents éléments ont été extraits du site msdn de Microsoft disponible à cette adresse : http://msdn.microsoft.com/en-us/library/bb613588(v=vs.110).aspx