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

Windows Presentation Foundation Discussion :

Binder le "nom" de la propriété


Sujet :

Windows Presentation Foundation

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut Binder le "nom" de la propriété
    Bonjour,

    Pour construire mes interfaces graphiques et pour augmenter l'aspect "dynamique" de mes interfaces, je voudrais pouvoir binder le nom de mes propriétés au Content de mes Label.

    Je parle bien du "nom" des propriétés et non pas de leur contenu.

    Est-ce que quelqu'un aurait la solution ?

    Merci beaucoup d'avance,

    Laurent

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Bonjour,

    Avec l'espace de nom System.Reflection c'est possible, mais ça va faire des lignes de trois bornes pour pas grand chose
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    Je me vois pas utiliser la réflection en xaml juste pour mettre le nom de la propriété dans le label ^^

    Il n'y a pas de possibilité avec le {Binding} ?

  4. #4
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Evidemment, pas dans le xaml, il faut le binder à une propriété string dans laquelle on mettra ensuite le résultat de la reflexion.
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  5. #5
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Hello,

    Tu veux lorsque tu définis un Binding afficher le nom de la propriété (qui sera alors le Path) ou alors afficher dans un ItemsControl le nom des propriétés d'un objet ?

    ++

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    Ce que je voulais obtenir avec une façon simple c'était par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <Label Content="FirstName" />
    <Textbox Content="{Binding Path=FirstName}" />
    Prénom ne serait pas écrit en dur mais utiliserait le nom de la propriété dans la classe, ou bien le System.ComponentModel.DisplayName

  7. #7
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Tes contrôles sont générés de façons dynamiques ?

    Sinon je pense qu'il faudrait que tu fasses un custom control. Tu pourrais lui fournir un Binding et en jouant avec BindingExpression récupérer le Path...

    Bon courage,

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    Non justement, ils ne sont pas créés dynamiquement mais bien créer à la main dans le xaml.

    A quoi sert BindingExpression dans ton histoire ? je ne visualise pas très bien ce que tu me proposes pour le coup.

    Merci de ton aide

  9. #9
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    D'accord...

    Ce que je proposais:

    • Un custom control qui définit une DependencyProperty "BindedData"
    • Dans le template du customControl tu as un Label et un textBlock
    • Tu bindes le text du textBlock sur BindedData
    • Dans le code du custom control tu utilises BindingExpression(ou BindingOperations je ne sais plus) pour récupérer le binding qui est fait sur BindedData. A partir de ce binding du récupéres le path
    • tu settes le path comme text de ton label
    • Tu utilises ton customControl en mettant le binding original sur textBlock sur sa propriété BindedData.


    un peu tiré par les cheveux et je ne suis pas sur de l'avantage mais bon

    Tu peux regarder du côté du contrôle DataForm de Silverlight qui fait, sensiblement, la même chose...

    Bon courage,

  10. #10
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    La question principale que je me pose reste :

    |-----------|
    | Pourquoi ? |
    |-----------|
    |
    |
    |

    (Ouais je voulais prendre un smiley mais y'en a pas donc je crée le mien à la oldschool ;D)
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    J'avoue avoir réfléchi à propos de la pertinence de ce que je recherche, et le besoin est plus "for fun" que réellement nécessaire.

    En tout cas merci pour tes éléments de réponse, je creuserai avec ça, mais je pense que le jeu n'en vaut pas la chandelle, sauf dans le cas de génération automatique de UserControl.

+ Répondre à la discussion
Cette discussion est résolue.

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