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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    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 Expert
    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
    Par défaut
    utilise une observablecollection<> plutot qu'une list<>

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    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
    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 éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    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
    Par défaut
    Tu n'as pas le détail de l'erreur (dans détail -> InnerException) ?

+ 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