IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

Comprendre le databinding avancé


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut Comprendre le databinding avancé
    Bonjour,

    De manière très générale, je cherche un article/tutoriel/msdn... qui explique le binding côté markup de fond en comble. Je maîtrise les cas les plus simples de binding (utilisation de MVVM), mais lorsqu'il s'agit de faire des choses un peu plus complexes, je tâtonne (au mieux), voir je m'enlise et je finis par dupliquer des données d'un view model à un autre, juste parce que je ne maîtrise pas assez le binding. Le databinding étant une des pierres angulaires de WPF/Silverlight, je pense qu'il est nécessaire d'en comprendre toutes les subtilités, n'est-il pas? Des articles simples on en trouve à la pelle, mais qque chose qui décortique et explique tout ?????

    Quelqu'un a un lien? J'avais trouvé [un billet de blog intitulé [WPF] Data Binding Quick Reference par Frédéric Hamel mais c'est pas suffisant. J'ai pas compris la notation avec les {} qui apparemment peuvent s'imbriquer...?

    Illustration de ma frustration: Le problème du jour : comment binder des champs d'un DataGrid (qui sont templatées) vers le une donnée du view model père...

    Des problèmes du style, j'en rencontre saouvent. Et je finis par rajouter du code C#, ne sachant pas comment faire côté XAML!!

    Des idées???
    Merci
    Christophe

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 203

  3. #3
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Par défaut
    Je sais, c'est pas bien : la source ne provient pas de developpez.com
    Mais, faut admettre qu'un article aussi complet est exceptionnel (à mon humble opinion)

    http://www.e-naxos.com/DnlManager.as...ID=102&Lang=FR
    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

  4. #4
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Bonjour Christophe,

    Tout d'abord, il faut savoir que le Binding en Silverlight est beaucoup plus limité qu' en WPF (même si en SL4 cela c'est un peu amélioré).

    il y a 3 choses à maitriser dans le Binding :
    - le Path
    - Les converters
    - La Source

    regarde déjà ce tuto de Sky qui est très bien fait et qui t'expliquera les Path et les converters:

    http://broux.developpez.com/articles...g-silverlight/

    Pour les sources il en existe 4 en silverlight et elle te permet de faire pointer la source de ton Path

    1 - la source par défaut qui équivaut au datacontext de ton object. tu n'as besoin de rien faire
    2 - ElementName : te permet de faire pointer la source de ton Path vers un control ou un dependencyObject nommé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {Binding Path=Text, ElementName=MonTextBlock}
    3 - StaticResource : pointe vers une ressource nommée (utilisée aussi notamment pour les Converters)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {Binding Path=Text, Source={StaticResource MonTextBlockEnRessource}}
    4 - RelativeResource : pointe vers une ressource relative à l'endroit ou l'on se trouve. Il existe deux type de source relative :

    * Self qui permet de pointer la source sur soit même (par exemple fixe la couleur de son fond sur la couleur de son BorderBrush).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    BorderBrush = {Binding Path=Background, RelativeSource={RelativeResource Self}}
    * TemplatedParent: Très pratique dans les controles templatés puisque qu'il renvoi au DataContext du ContentTemplate du ContentControl.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {Binding Path=MonViewModel, RelativeSource={RelativeSource TemplateParent}}
    pour ton problème :

    comment binder des champs d'un DataGrid (qui sont templatées) vers le une donnée du view model père...
    A vue de nez, mais sans avoir testé, le RelativeSource avec TemplatedParent pourrait t'aider.

  5. #5
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Je sais, c'est pas bien : la source ne provient pas de developpez.com
    Mais, faut admettre qu'un article aussi complet est exceptionnel (à mon humble opinion)

    http://www.e-naxos.com/DnlManager.as...ID=102&Lang=FR
    Le document est vraiment de qualité bien qu'en Silverlight les choses sont beaucoup plus simple qu'en WPF (pour le moment)

  6. #6
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Par défaut
    bien qu'en Silverlight les choses sont beaucoup plus simple qu'en WPF
    Oui... c'est sur ... quoi que cela tend à changer vue que Silverlight commence à tirer WPF et non l'inverse, mais bon c'est une autre histoire...



    Edit : Super le controle qui se retourne
    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

  7. #7
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Oui... c'est sur ... quoi que cela tend à changer vue que Silverlight commence à tirer WPF et non l'inverse, mais bon c'est une autre histoire...
    c'est pour ça que j'ai précisé "(pour le moment)".
    Je pense que SL5 va nous remettre une tartine de Binding à la sauce WPF

    Comme le précise le document auquel tu renvoies, Le binding peut être assez problématique pour le debuggage car il est issue d'une chaine de caractère (comme en ASP.NET) mais à mon avis, l'avantage de l'utilisation de MVVM est plus grand à l'usage. Gageons que le debuggage s'améliorera avec les prochaines versions de VS.


    Edit : Super le controle qui se retourne
    Merci Merci !

  8. #8
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Par défaut
    Suis d'accord pour l'aspect debuggage et mvvm,
    @+
    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

Discussions similaires

  1. [Flex4] Comprendre le dataBinding
    Par dousylanse dans le forum Flex
    Réponses: 1
    Dernier message: 31/05/2012, 11h22
  2. Réponses: 3
    Dernier message: 31/05/2010, 19h33
  3. Génération de code, architecture 3 tiers et databinding avancé
    Par neo.51 dans le forum Général Dotnet
    Réponses: 56
    Dernier message: 25/11/2008, 12h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo