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 :

MVVM - Un ListBox ne se raffraichit pas [Débutant]


Sujet :

Windows Presentation Foundation

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Points : 33
    Points
    33
    Par défaut MVVM - Un ListBox ne se raffraichit pas
    Bonjour à tous,

    je débute dans le développement d'application en MVVM (avec le framework MVVM Light) et je bloque sur le rafraîchissement d'un ListBox.
    Lorsque je choisis un client dans un dataGrid, une propriété bindé sur l’évènement SelectedItem est mise à jour (la propriété CurrentClient).
    Cette propriété va me permettre de mettre une liste à jour (suivant l'Id du client sélectionné, je vais rechercher la liste des sociétés qui lui sont liés).
    J'ai mis des points d'arrêt dans mon code et le ViewModel fait exactement ce que j'attends de lui. Mais la Listbox n'est pas mise à jour (sauf quand je quitte ma view et que je reviens dessus).

    Dans ma view j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ListBox HorizontalAlignment="Stretch" Margin="10,3,3,10" Name="lbCompanies" VerticalAlignment="Stretch" Grid.Row="1" ItemsSource="{Binding Companies}"  />
    Dans ma ViewModel qui lui est liée, j'ai ceci :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
            private ClientPresenter _currentClient;
            public ClientPresenter CurrentClient
            {
                get { return _currentClient; }
                set
                {
                    _currentClient = value;
                    RaisePropertyChanged("CurrentClient");
                    CurrentClientHasChanged();
                }
            }
     
            private List<string> _companies = new List<string>();
            public List<string> Companies
            {
                get { return _companies; }
                set
                {
                    _companies = value;
                    RaisePropertyChanged("Companies");
                }
            }
     
     
            private void CurrentClientHasChanged()
            {
                if (CurrentClient.Id == 1)
                {
                    Companies.Add("IBM");
                    Companies.Add("Microsoft");
                }
                else
                {
                    Companies = new List<string>();
                }
     
            }
    Merci d'avance pour votre aide.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Points : 33
    Points
    33
    Par défaut
    C'est bon, j'ai trouvé mon erreur =)
    Apparement, le composant ListBox ne se met pas à jour lorsqu'il est bindé à une liste. J'ai remplacé cette List par un ObservableCollection et ça marche !

    Edit : D'ailleurs voici mes modifications pour ceux qui sont intéressé :

    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
    19
    20
    21
    22
    23
     
            private List<string> _companies = new List<string>();
            private ObservableCollection<string> _myCollection;
            public ObservableCollection<string> MyCollection
            {
               get { return _myCollection ;  }
               set { _myCollection = value; RaisePropertyChanged("MyCollection");}
            }
     
            private void CurrentClientHasChanged()
            {
                if (CurrentClient.Id == 1)
                {
                    _companies.Add("IBM");
                    _companies.Add("Microsoft");
                }
                else
                {
                    _companies = new List<string>();
                }
                MyCollection = new ObservableCollection<string>(_companies);
     
            }

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

Discussions similaires

  1. [AC-2000] Ma listbox ne se refresh pas
    Par Merellys dans le forum Access
    Réponses: 57
    Dernier message: 03/07/2014, 14h15
  2. UpdatePanel ne se raffraichit pas
    Par kerjon dans le forum ASP.NET Ajax
    Réponses: 0
    Dernier message: 26/09/2013, 11h13
  3. MVVM comportement listBox
    Par rvzip64 dans le forum Windows Presentation Foundation
    Réponses: 11
    Dernier message: 20/10/2011, 17h27
  4. Listbox qui ne scroll pas
    Par ctxnop dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 04/02/2011, 19h32
  5. Listbox ne se resize pas
    Par cyberbobby dans le forum Silverlight
    Réponses: 2
    Dernier message: 07/06/2010, 11h26

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