DataBinding et CommandBinding

Published 20 May 08 03:15 AM | Nico

Le DataBinding est l’art de connecter de façon bi-directionnelle des contrôles à leur source de données. C'est une solution pour éviter d'écrire du code fastidieux de mise à jour de données entre une des propriétés des controles de l'IHM et des données métiers. Microsoft a apporté cette fonctionnalité avec le framework 2.0, et c'est une technique éprouvée, pour réaliser des IHM de façon efficace.

Pourtant, il y a quelques limitations, qui font que cette technique est assez peu utilisée:

  • Tous les contrôles ne sont pas concernés; si on peut binder tous les contrôles simples, et les liste ou les grilles, il manque les arbres, les listview ou les Menus.
  • Le Designer de Visual Studio n'invite pas à l'utiliser. Personnellement, je n'ai jamais pu définir correctement un DataBinding avec leur interface, même avec un tutorial bien fait.
  • Le DataBinding n'est pas immédiat non plus à faire avec du code. Il est nécessaire d'écrire beaucoup de code, en implémentant des Interfaces diverses, qu'il faut bien comprendre pour le faire correctement.

Avec Aspectize, le DataBinding que nous proposons est particulièrement enrichi et devient très facile à utiliser:

  • Toutes les propriétés de tous les contrôles sont bindables. En particulier les arbres, pour lesquels cela relève presque de la magie, tant il est facile de réaliser un arbre complexe, de façon déclarative. Cela permet aussi de binder des propriétés habituellement dédiée à la présentation, comme un BackColor ou un Enabled (exemple courant d'une BackColor Red pour un montant négatif). Cela permet de réaliser des interfaces riches sans écrire une seule ligne de code.
  • Le DataBinding est déclaratif; il n'y a pas une seule ligne de code à écrire. Il se définit en quelques clics de souris avec BindingStudio, qui porte bien son nom.
  • Toutes les conversions de données standard sont prises en charge automatiquement. Si votre donnée est un numérique, vous n'avez rien à faire pour la binder dans un TextBox. Les formats standards sont pris en charge, notamment pour les dates et les numériques.
  • Le DataBinding prend en charge les relations entre les données. Réaliser des contrôles Parent/Child fonctionne avec tous les contrôles. C'est particulièrement efficace pour les arbres, dont les noeuds sont des liens Parent/Child entre des données, mais aussi pour des applications MDI (la relation MDI/MDIChild s'appuie sur une relation entre des données), des TabControl (les TabPages sont les Child d'une donnée commune parent) ou encore les ComboBox (qui permet de modifier des associations entre 2 entités).
  • Il est enrichi aux Commandes. De la même manière que les propriétés reflètent des données, les événements sont associés aux commandes. Là encore, pas une seule ligne de code n'est nécessaire, et BindingStudio vous permet en 2 clics de souris, d'associer une commande Server à un clic de bouton. Nous parlons alors de CommandBinding.

Le DataBinding est une technique très intéressante pour éliminer du code, mais néanmoins un peu difficile à utiliser, et qui reste limitée. En l'étendant et en la généralisant, nous la rendons accessible à tous, pour l'ensemble des IHM. Nous l'avons déjà fait pour les interfaces WinForms, nous sommes en train de le faire pour Asp.Net/Ajax, et nous la porterons vers WPF et SilverLight dans un avenir proche.

Nous verrons également, comment associer une validation de données, qui devient, elle aussi, déclarative.

Commentaires

Pour ajouter un commentaire, vous devez d'abord vous identifier ici
Pas de commentaires