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 :

Equivalent d'un {Binding this}?


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut Equivalent d'un {Binding this}?
    Bonjour,
    je créé des UserControls qui doivent agir sur un autre UserControl ( Des Outils pour une Carte ). Mes Outils prennent en parametre cette Carte.
    Je ne pense pas qu'il soit possible de passer un parametre dans du xaml, alors je tente de binder le dataContext en faisant un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Outils DataContext={Binding this}></Outils>
    Le problème c'est que je n'y arrive pas.
    Est-il possible de faire cela?
    Merci!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 121
    Par défaut
    Il te suffit d'enlever le "this",

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Outils DataContext={Binding}></Outils>

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Merci mais ca ne fonctionne pas.
    Il me semble qu'en faisant ca, c'est le dataContext du parent qui est pris.
    D'ailleurs effectivement si je fais ca, et que je rajoute dans mon userControl Carte, cela fonctionne( Si je n'ajoute pas de code, le DataContext est null).
    Maintenant si j'ai besoin de remplir le DataContext de Carte d'autre chose, j'aurai des soucis.
    (Sans même toucher Carte, et que je souhaite utiliser un Outil2 dans un Outil1, je récupererai le DataContext de Carte au lieu de Outi1).

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    C'est un peu du bricolage... Ce binding this.

    Déjà, est il justifié d'avoir ces User Control imbriqué ?
    Ensuite je ne vois pas pourquoi tu veux absolument le faire passer par le XAML...
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Justifié je ne sais pas, mais j'ai pas trouvé d'autre solution.
    J'ai une carte auxquels je dois rajouter un outil de mesure.
    Cet outil permet soit de mesurer une surface, soit une longueur.
    Il n'a pas était spécifié comment devait apparaitre cet outil ( en permanence sur la carte, à la suite d'un clic, en dehors de la carte...), je pense donc nécéssaire de faire un Control (ou un UserControl pour me simplifier la tache) pour pouvoir le mettre ou je veux. J'ai besoin de capter les evenements de la carte, ainsi que les méthodes associées. Je ne vois donc qu'une référence sur la carte en question.
    Apres je ne souhaite pas nécessairement passer par du xaml, mais il me semble que ca sera plus simple à intégrer (niveau design) par la suite.

  6. #6
    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
    pour que cela fonctionne il faut que le DataContext de ton objet Carte pointe sur lui même :

    coté .cs dans ton constructeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.LayoutRoot.DataContext = this;
    Pointer sur le DataContext du LayoutRoot plutot que sur celui du UserControl lui même et important car notre DataContext sera ainsi protégé d'un changement provenant de l'extérieur du controle.

    Mais je n'aime pas trop utiliser seulement le DataContext car on ne se rappelle jamais du type de paramètre à passer au control.
    Dans ton cas, je rajouterai une propdp Carte dans ton objet Outils. Le binding est le même qu'auparavant mais c'est plus clair :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <Outils Carte={Binding}></Outils>
    si tu veux plus d'information sur le sujet je te conseille la lecture de ceci :

    http://blog.naviso.fr/wordpress/?p=15

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

Discussions similaires

  1. [Généralités] Equivalent de Self ou This ?
    Par Jon Shannow dans le forum WinDev
    Réponses: 4
    Dernier message: 22/02/2013, 16h09
  2. Equivalent de "this"
    Par beni34 dans le forum Delphi .NET
    Réponses: 4
    Dernier message: 16/08/2011, 10h59
  3. Equivalent de toString().Replace() avec Binding
    Par slacky dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 20/07/2011, 11h43
  4. "Binding" d'une fonction (equivalent du accolade de mxml)
    Par Gaaaga dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 25/11/2008, 10h34
  5. Réponses: 2
    Dernier message: 08/12/2007, 19h51

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