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 combo.ItemsSource sur une list<String>


Sujet :

Windows Presentation Foundation

  1. #1
    Membre actif Avatar de chris81
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 626
    Points : 298
    Points
    298
    Par défaut Binder combo.ItemsSource sur une list<String>
    Bonjour

    en wpf j'ai cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <ComboBox x:Name="cbMarque"  ItemsSource="{Binding Source=Marque.Marques}"/>
    Voici ma classe Marque

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public abstract class Marque
        {
            public static ObservableCollection<Marque> Marques = new ObservableCollection<Marque>() { Renault.RENAULT, Peugeot.PEUGEOT };
        }

    Le souci au lieu d'avoir ds ma combo Renault, Peugeot j'ai Marque.Marques avec les lettres les une en dessous des autres.

    Par contre si je fais this.cbMarque.ItemsSource = Marque.Marques; en code behind ca fonctionne.

    Qqun serait pourquoi ?

    merci

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Pour le Binding, il faut une propriété implémentant un get. Essaie avec ça :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static ObservableCollection<Marque> Marques{
      get{ return new ObservableCollection<Marque>() { Renault.RENAULT, Peugeot.PEUGEOT }; }
    }

  3. #3
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Dans quel fichier as-tu mis la déclaration de ta ComboBox en XAML ?

    A priori, je dirai que tu devrais faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <TonControl.Resources>
    <div style="margin-left:40px"><local:Marque x:Name="myMarque"/></div></TonControl. Resources>
    [...]
     
    <ComboBox x:Name="cbMarque"  ItemsSource="{Binding Source={StaticResource myMarque.Marques}"/>

  4. #4
    Membre actif Avatar de chris81
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 626
    Points : 298
    Points
    298
    Par défaut
    oui j'avais essayé aussi cela mais ca ne change rien. merci qd meme

  5. #5
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Bon alors, pas sûr que ce soit la meilleure méthode, mais j'ai réussi en faisant ceci :

    1) Dans ta classe Marque, tu mets ça (j'ai mis des string dans la collection, mais ça doit marcher avec tes objets Marque) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        public abstract class Marque
        {
            public static ObservableCollection<string> Marques = new ObservableCollection<string>() { "Renault", "Peugeot" };
     
            public static ObservableCollection<string> getMarques()
            {
                return Marques;
            }
        }
    2) Créer un ObjectDataProvider pour avoir la liste de tes objets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            <ObjectDataProvider x:Key="MarqueValues"
                                MethodName="getMarques"
                                ObjectType="{x:Type model:Marque}">
            </ObjectDataProvider>
    3) Affecter la source de ta ComboBox avec l'ObjectDataProvider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                        <ComboBox x:Name="cmbMarques"
                                  ItemsSource="{Binding Source={StaticResource MarqueValues}}"
                                  SelectedIndex="0"/>
    Mais bon, ça me paraît un peu goret, y'a sûrement plus simple...

  6. #6
    Membre actif Avatar de chris81
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 626
    Points : 298
    Points
    298
    Par défaut
    Oui l'ObjetDataProvider fonctionne trés bien.
    Mais voici la syntaxe correcte dans le xaml faut mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemsSource="{x:Static my:Marque.Marques}"
    ++

  7. #7
    Membre actif Avatar de chris81
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 626
    Points : 298
    Points
    298
    Par défaut
    oups dsl seiryujay, je viens de regarder le code que tu avais mis la 1° fois, c'est vrai que je n'ait pas testé cela mais il doit fonctionner.

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

Discussions similaires

  1. Grouping sur une liste de string
    Par myCollections dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 30/08/2010, 16h40
  2. binder une combo sur une list ou une autre
    Par chris81 dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 12/02/2009, 12h01
  3. [ArrayList] contains() sur une liste de String
    Par nicotine002 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 18/01/2008, 19h19
  4. Réponses: 23
    Dernier message: 08/06/2006, 15h06
  5. [Débutant][jsp] évènement sur une liste
    Par phoebe dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 14/05/2004, 10h53

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