Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parSébastien Martinez Modifié depuis plus de 10 années
1
DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – http://blogs.microsoft.fr/mitsufuhttp://blogs.microsoft.fr/mitsufu Pierre LAGARDE, relations techniques développeurs mailto:pierlag@microsoft.com - http://blogs.developpeur.org/fox mailto:pierlag@microsoft.comhttp://blogs.developpeur.org/fox Présentation technique, Paris, 28 septembre 2005
2
Agenda Introduction Les sources de données Le modèle ASP.NET (v1 et v2) Le modèle WinForms Conclusion
3
Introduction Pourquoi cette technologie ? Architecture en couches Contrôles génériques Liaison bidirectionnelle Contrôleur de type MVC Contrat nécessaire entre les contrôles et les sources de données Les sources de données Implémentation d’interfaces communes définissant le modèle Les éléments simples et les collections TypeDescriptor, notion de vue Les contrôles Connexions aux vues et aux interfaces de binding
4
Démo Démo 1: Helloworld… …ou presque
5
Introduction Ca marche tout seul Binding sur objets Binding sur collections Binding en mode design Binding == Reflection ?
6
Les sources de données Mise en évidence des TypeDescriptors Interception d’un changement de valeur Personnalisation de la vue d’un objet Ajout d’une propriété Champ calculé Objet clone Les collections Fonctionnement de base: array, generics Personnalisation de la vue depuis la collection (ITypedList) OnCalc Objets « relais »: DataView, BindingSource, ObjectDataSource L’interface IBindingList Ajout d’un élément virtuel Le cas du DataSet
7
Les sources de données, les TypeDescriptors Du Type au TypeDescriptor TypeDescriptor.GetProperties(type) Rôle des PropertyDescriptors: Définit la vue d’une propriété (nom, type, etc) Fournit un accès à la valeur de chaque propriété lecture et en écriture Possibilité de se brancher aux évènements (Changed)
8
TypeDescriptor Customer •Id •Name •CompanyName •IsPartner •Id •Name •CompanyName •IsPartner TypeDescriptor •Id •Name •CompanyName •IsPartner •Id •Name •CompanyName •IsPartner DataBinding Reflection
9
Démo Démo 2: mise en évidence du TypeDescriptor
10
Les sources de données, personnalisation de la vue d’un objet L’interface ICustomTypeDescriptor GetProperties() permet la réécriture de la vue d’un objet propriété par propriété. (via les PropertyDescriptors) Différence entre TypeDescriptor.GetProperties(object) et TypeDescriptor.GetProperties(type) TypeDescriptor.GetProperties(object) renvoie les PropertyDescriptors éventuellement réécrites par ICustomTypeDescriptor TypeDescriptor.GetProperties(type) renvoie les PropertyDescriptors du type de base sans tenir compte d’une éventuelle implémentation d’ICustomTypeDescriptor
11
ICustomTypeDescriptor Order •OrderId •Amount •OrderId •Amount ICustomType Descriptor •OrderId •Amount •OrderId •Amount DataBinding Reflection •Fake
12
Les sources de données, ICustomTypeDescriptor
14
Démo Démo 3: ajout d’une propriété virtuelle
15
Les sources de données, « la guerre des clones » Création d’un objet à la vue entièrement paramétrable Réécriture complète de l’ensemble des PropertyDescriptors Mise en place d’une collection de définitions de propriétés
16
ICustomTypeDescriptor CustomTypeObject •Properties[] ICustomType Descriptor DataBinding Reflection •Name •Text •Anything •Name •Text •Anything •Name •Text •Anything •Name •Text •Anything
17
Démo Démo 3 bis: vue dynamique
18
Les sources de données, les collections Modifier la vue d’un objet depuis une collection Permet d’être indépendant de la définition de l’objet Permet de faire des modifications propre à la présentation L’interface ITypedList GetItemProperties(): redéfinit la vue des éléments de la collection Attention aux listes hétérogènes ! Le type des éléments n’est testé qu’une seule fois (TypeDescriptors uniques !)
19
Les sources de données, ITypedList Collections: ArrayList, générics, … •Id •Name •CompanyName •IsPartner •Id •Name •CompanyName •IsPartner ITypedList •Id •Name •CompanyName •IsPartner •Id •Name •CompanyName •IsPartner DataBinding Reflection •Fake Items[]
20
Les sources de données, ITypedList
21
Démo Demo 4: ajout d’une propriété virtuelle à une collection
22
Démo Demo 5: ajout d’un item virtuel à la vue
23
Les sources de données Pourquoi IListSource ? Palier au manque de délégation d’implémentation d’interface
24
Les sources de données Le cas du DataSet
25
Le modèle WinForms La classe System.Windows.Form, support du moteur de Binding Les managers PropertyManager CurrencyManager L’objet BindingContext
26
Le modèle ASP.NET
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.