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 :

Binding ComboBox sur collection d'objet


Sujet :

Windows Presentation Foundation

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Points : 369
    Points
    369
    Par défaut Binding ComboBox sur collection d'objet
    Bonjour à tous.

    Je me lance dans WPF et je suis un peu méga perdu sur les bindings.

    J'ai une application WPF.
    Une classe Manager.
    Une classe Format.(propriétés : Name,Width,Height)

    Dans la classe Manager j'ai une Collection<Format> _Formats.
    Et dans le Window1.xaml.cs un objet myManager de type Manager.

    Je voudrais que ma combobox contienne la liste des noms de Format situés dans _Formats.

    Je pourrais le faire facilement "à l'ancienne" mais puisque j'utilise le wpf pour l'apprendre je me force à utiliser le binding.

    Pour cela j'ai regardé plusieurs tutos mais j'ai vraiment du mal.
    Je suis arrivé à faire en sorte qu'au chargement la combobox se remplisse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public Window1()
            {
                InitializeComponent();
                CmbFormat.ItemsSource = LoadComboBoxData();
            }
     
    List<string> LoadComboBoxData()
            {
                List<string> aReturn=new List<string>();
     
                foreach (Format aFormat in myManager.Formats)
                {
                    aReturn.Add(aFormat.Name);
                }
     
                return aReturn;
            }
    Mais le problème c'est que si la collection _Formats se modifie la combobox n'est pas modifiée.

    Bref je vais retourner étudier cela mais si quelqu'un avait quelques explications sur comment je pourrais proprement binder ma combobox je suis preneur.

    Merci.

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    utilise une observablecollection<> plutot qu'une list<>
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Points : 369
    Points
    369
    Par défaut
    Même résultat avec l'ObservableCollection<>

  4. #4
    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,

    Il faut que tu fasses en sorte que ta propriété Formats (qui est actuellement une Collection<Format>) de ton objet Manager soit une ObservableCollection. Ce genre de collection fournit des notifications lorsque des éléments sont ajoutés, supprimés

    Ensuite tu peut faire ainsi :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    CmbFormat.ItemsSource = myManager.Formats;

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Points : 369
    Points
    369
    Par défaut
    Binoo c'est ce que je viens de faire et j'ai cette erreur :
    Impossible de créer une instance de 'Window1' définie dans l'assembly 'AutreFormatWPF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Une exception a été levée par la cible d'un appel. Erreur dans le fichier de balisage 'Window1.xaml' ligne 1 position 9.
    C'est bien à cause de la mise en Observable car si je l'enlève il n'y a plus d'erreur.

  6. #6
    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
    Tu n'as pas le détail de l'erreur (dans détail -> InnerException) ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Points : 369
    Points
    369
    Par défaut
    Autant pour moi , c'est que je sérialise mon Objet Formats, donc au changement de type il y avait un problème lors de l'instanciation de Formats à partir de cet enregistrement.

    Par contre c'est bon ça se rajoute bien mais ça me met 'NomDeLappli.Format' pour chaque ligne dans le combobox.

    [EDIT] C'est bon en 'overridant' le ToString() de ma classe Format.
    [RE-EDIT] Merci ^^
    J'aime bien quand je cherche pendant plusieurs heures, que j'écris plein de fonctions et que la solution se résume à une ligne

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/08/2010, 17h21
  2. [ComboBox]Générer une collection d'objets (ID, Libellé)
    Par mordrhim dans le forum Windows Forms
    Réponses: 0
    Dernier message: 17/11/2009, 11h44
  3. Réponses: 1
    Dernier message: 30/03/2008, 04h20
  4. Réponses: 1
    Dernier message: 05/07/2007, 14h48
  5. [Struts] <logic:iterate> sur une collection d objets c
    Par trax020 dans le forum Struts 1
    Réponses: 2
    Dernier message: 12/05/2005, 00h11

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