1. Qui est Ian Griffiths?▲
Ian Griffiths est un consultant indépendant sur la technologie .Net. Il est (ou a été) formateur pour différentes sociétés de formation. Aujourd'hui il passe son temps entre le consulting et les conférences, et continue d'écrire des livres principalement sur Windows Vista/Longhorn ainsi que Windows Presentation Foundation
2. Résumé▲
Il va être difficile de vous expliquer clairement ce en quoi le data-binding change avec WPF car il n'est plus tout pareil. Pour binder une source à un contrôle, votre code ressemblera plus à cela:
<Texblock
Text
=
"{Binding Path=CurrentCulture, Source={x:Static t:Thread.CurrentThread}}>
De plus, le data-binding peut se faire à un niveau un peu supérieur au contrôle (son containeur) afin par exemple de ne spécifier qu'une seule fois la source (data context) et puis de spécifier pour chaque contrôle sa cible (member).
Parallèlement à cela, l'on voit apparaître des DataTemplate qui peuvent être stockés dans un fichier ressources pour être appelés plusieurs fois, et qui permettent de spécifier la forme d'affichage du binding. On peut ainsi binder une liste d'utilisateurs (nom + prénom + avatar) à une listview et appliquer tel ou tel template de binding.
Dans un premier cas nous pourrions afficher "name : {nom} {prénom}" ou dans un autre cas appliquer le thème complet "{image} {nom} {prénom}", ce qui, en une ligne de code permet de choisir l'affichage désiré.
Deux agréables surprises pour cette fonctionnalité sous WPF, tout d'abord l'utilisation d'XPath pour binder les éléments, ce qui permet très rapidement de n'avoir pas à extraire telles ou telles données afin de les binder mais de binder "à la volée".
La seconde surprise concerne le data-binding hiérarchique et les hierarchicalDataTemplate, qui lorsque vous aurez pris la peine de chercher à quoi ils servent permet de binder de façon hiérarchique les données sur certains contrôles comme les treeview.
Ainsi, représenter le contenu d'un fichier XML sur plusieurs niveaux (nœuds) prend exactement 4 lignes de codes, zéro boucle, et l'on obtient un treeview dépliant représentant fidèlement notre fichier XML.
3. Conclusion▲
Le data-binding prend une tout autre dimension par rapport au simple couple datasource/datamember que nous avions l'habitude d'utiliser. Mêlé à des templates, la data-binding permet de donner à nos applications, et à tous les éléments pouvant contenir des items, une évolutivité sans limites, permet d'afficher rapidement et de façon claire toutes les informations nécessaires.