Microsoft vient de sortir une version "béta" (CTP) de son contrôle Datagrid utilisable avec WPF 3.5 SP1. Ce contrôle est disponible avec son code source sur www.codeplex.com/wpf, et Jaime Rodriguez en a posté un exemple d'utilisation.
Pourtant, ce contrôle Datagrid n'est pas destiné à faire concurrence aux Datagrid WPF édités par des éditeurs de composants. Il devrait rester assez simple : ce n'est pas de l'intérêt de Microsoft de tuer les éditeurs de composants ! Par contre le code source du Datagrid Microsoft est disponible gratuitement, alors qu'il est relativement cher ou carrément non disponible chez les éditeurs tiers.
Il existe plusieurs contrôles Datagrid chez différents éditeurs :
Michael Sync a réalisé un banc d'essai des Data Grid de ces éditeurs.
J'ai été surpris de constater qu'Infragistics n'était pas vraiment à la hauteur dans ce domaine précis, alors que ses composants sont renommés. Manque de maturité du produit sans doute.
Une vue du Data Grid de Xceed
Xceed a été le premier a sortir un Data Grid pour WPF. Cette expérience lui vaut d'être sans doute le Data grid le plus utilisé par la communauté des développeurs WPF. La version 3.0 de ce contrôle vient tout juste de sortir, avec des visualisations en 3D. Et d'après Michael Sync et les commentaires de l'article, Xceed est sans doute le meilleur Data Grid actuellement, avec celui de Telerik. Cerise sur le gâteau, Xceed propose une version Express gratuite.
Mais gros, gros problème : la performance. Ces contrôles Datagrid pour WPF sont très jolis, avec des skins, des effets 3D, mais... qu'est-ce qu'ils sont lents ! A un point qu'ils peuvent être considérés comme inutilisables... Sur les forums des éditeurs, des clients demandent conseil à propos de la lenteur d'affichage, et il leur est répondu que l'amélioration des performances est un sujet prioritaire.
Le Datagrid de Microsoft est encore plus lent que celui de Xceed, selon mes tests personnels très subjectifs. Le scroll est catastrophique, et l'impression de lenteur générale est assez pénible (sur un Core 2 Duo 2,4 Ghz avec 2 Go de RAM). Ces pauvres performances expliquent sans doute pourquoi le Datagrid n'a pas fait partie de la version 3.5 SP1 de .NET.
Qu'en conclure ? Ne pas utiliser de Datagrid sous WPF, tout simplement ! ;)
Peut-être que le concept de Datagrid est très lié et très adapté à .NET 2 et Windows Form. Datagrid = Winform + .NET 2.0 ? Il existe de très jolis DataGrids maintenant pour Windows Form.
Et alors comment présenter des données sous WPF ? Le Datagrid n'est sans doute pas adapté. Sous WPF, il faut chercher d'autres manières de présenter les données. De nouvelles "expériences utilisateur" sont à créer. Avis aux amateurs. Billy Hollins présente une telle application WPF en video. Ci dessous, deux écrans représentant un design maître-détail :
La liste de clients : une liste non éditable
Le détail d'un client
Cette approche est très représentative de la manière de concevoir une application WPF : il faut bien connaître les fonctionnalités et les possibilités de la plate-forme, puis se "laisser porter" par ces possibilités pour concevoir une interface utilisateur adaptée. Tout un programme !