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 :

[BINDING] 2 datacontext et une combobox


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Par défaut [BINDING] 2 datacontext et une combobox
    Bonjour,

    J'ai une combobox que je voudrais remplir via un List<ComboBoxItem> retourné via un webservice. J'assigne donc le datacontext ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void svc_GetComboBoxItems(object sender, GetComboBoxItemsCompletedEventArgs e)
    {
       this.mycombobox.DataContext = e.Result;
    }
    et ça fonctionne ma combobox est bien rempli, voici le xaml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ComboBox x:Name="mycombobox"
     
    ItemsSource="{Binding}" 
    SelectedValue="{Binding Path=Key, Mode=TwoWay}" 
    DisplayMemberPath="Value" 
    SelectedValuePath="Key"
     
    />
    vous l'aurez compris l'objet ComboBoxItem est composé de 2 proriétés Key et Value (c'est une table de référence).

    et je voudrais bindé un objet métier sur cette combo afin que la combo se mette directement sur le bon item et que lorsque l'utilisateur modifie la combo l'objet métier soit automatiquement modifié aussi.

    attention si dans la combo la valeur qui est affiché c'est le libellé ("Value") l'info que je veux conserver c'est le code ("Key").

    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Ben tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.mycombobox.DataContext = e.Result;
    Donc ton SelectedValue="{Binding Path=Key, Mode=TwoWay}" ne risque pas de fonctionner, vu que je doute que dans e.Result se trouve un propriété Key.

    Il faudrait que tu crées une classe contenant un string nommée Key et une collection de tes objets.
    Tu assignerais cette classe comme DataContext de ton combobox.
    Ensuite dans ta callback de récupération de données tu ferais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maClasse.MaCollection = e.Result;

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Par défaut
    Je comprend pas trop l'interêt de recréer une classe !

    J'ai déjà une classe pour mon objet métier et une autre pour ma collection d'objets qui remplissent la combobox.

    Je me suis peut être mal exprimé mais dans le e.Result j'ai
    Key = 1, Value = Label1
    Key = 2, Value = Label2
    Key = 3, Value = Label3
    Key = 4, Value = Label4
    ce qui me permet de remplir ma combobox

    et dans mon objet métier (et c'est là que je ne sais pas comment faire pour le binder à ma combobox) j'ai plusieurs propriétés dont une qui référence la propriété Key du DataContext de la combobox.

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Tu écrases le DataContext de ta ComboBox en la remplissant, donc ton DataContext ne contient plus de propriété nommée Key, donc ton binding sur SelectedValue ne doit surement pas fonctionner.

Discussions similaires

  1. Binding de 2 tables dans une comboBox
    Par veyzo dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 28/02/2009, 09h56
  2. [Binding] DataGrid incluant une combobox
    Par Harry_polin dans le forum Windows Forms
    Réponses: 9
    Dernier message: 11/12/2008, 16h05
  3. [WPF] Binding d'une combobox
    Par mrrenard dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 14/04/2008, 10h58
  4. [WPF] Binding d'une combobox
    Par mrrenard dans le forum C#
    Réponses: 0
    Dernier message: 14/04/2008, 08h46
  5. Rafraîchir une combobox bindée
    Par Zebeber dans le forum Windows Forms
    Réponses: 6
    Dernier message: 26/02/2007, 07h49

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