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 :

ListBox Binding Source : pas de refresh ? [MVVM]


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Par défaut ListBox Binding Source : pas de refresh ?
    Bonjour,

    J'ai un petit problème de binding sur une listbox, et je ne comprend pas ce qui cloche : la propriété bindée de mon ViewModel est une ObservableCollection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Private _personList As ObservableCollection(Of Person)
        Public Property PersonList() As ObservableCollection(Of Person)
            Get
     
                If IsNothing(_personList) Then
                    _personList = GetPersonList()  //retourne quelques items de Person
                End If
                Return _personList
            End Get
            Set(ByVal value As ObservableCollection(Of Person))
                _personList = value
                OnPropertyChanged(Me, "PersonList")
            End Set
        End Property
    ma window resource :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <local:MainWindowViewModel x:Key="MainWindowViewModelDataSource"/>
    le datacontext de ma listbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataContext="{Binding Source={StaticResource MainWindowViewModelDataSource}}"
    et l'itemsource de ma listbox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemsSource="{Binding PersonList, Mode=TwoWay}"
    (j'ai aussi un datatemplate, et une procedure pour supprimer un élément que je ne note pas ici)

    La collection s'affiche correctement au démarrage, mais je ne parviens pas à la faire se rafraichir lorsque je modifié PersonList ??

    Quelqu'un a-t-il un exemple de code simple de binding MVVM de la source d'une listbox en .NET, car je ne comprend vraiment pas ce qu'il manque !!

    Merci,

    Stéphane

  2. #2
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    Salut,

    La collection s'affiche correctement au démarrage, mais je ne parviens pas à la faire se rafraichir lorsque je modifié PersonList ??
    Tu modifies la collection ou un élément de la collection ?
    Si c'est le deuxième cas (je pense que oui), il faut que Person implémente INotifyPropertyChanged.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Par défaut ooops
    Re,

    Après être reparti de zéro, comme c'est souvent utile dans ce genre de cas, j'ai trouvé le bug :
    Dans le xaml.vb, sur les procédures Delete/Load que je n'ai pas mentionnées, je chargeai le contexte de la window au lieu de celui de la listbox, donc je créai un nouveau ViewModel sur lequel je faisais les actions, et évidemment pas celui de la listbox qui logiquement ne bougeait pas !!
    donc suivant correct le code est :
    Dim d As MainWindowViewModel = Me.lbox.DataContext

    -->out !!

    Merci pour la réponse néanmoins !

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

Discussions similaires

  1. Binding sur les SelectedItems d'une ListBox ne fonctionne pas entièrement
    Par takinelinfo dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 14/06/2011, 10h46
  2. listbox chargée par source de donnée, refresh
    Par d4voisin dans le forum C#
    Réponses: 19
    Dernier message: 04/05/2011, 14h55
  3. Réponses: 6
    Dernier message: 29/06/2010, 10h33
  4. [forms 6i] Pas de refresh du block!
    Par cackybis dans le forum Oracle
    Réponses: 3
    Dernier message: 13/03/2006, 11h17
  5. Bind ou pas Bind?
    Par jonzuzu dans le forum MFC
    Réponses: 4
    Dernier message: 19/03/2004, 10h00

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