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 :

[WPF]Problème d'update de binding


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut [WPF]Problème d'update de binding
    Bonjour,

    J'ai dans une fenêtre une ListBox contenant des items bindés à une SortedList qui contient une liste de business objects classé par un objet DateTime :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SortedList<DateTime, MyObject>
    Dans cette même fenêtre, j'ai une ComboBox qui contient une liste d'année. Quand je change une année pour un item de la listbox, mon BusinessObject correspondant se met bien à jour, mais ma listBox elle ne se met pas à jour. En fait, l'ordre des éléments de ma ListBox devrait changer.
    Il est correct quand je relance mon appli, mais il ne se met pas à jour en temps réel.
    Voici mon code XAML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <ComboBox x:Name="cbChoixAnnee" SelectionChanged="cbChoixAnnee_SelectionChanged" Loaded="cbChoixAnnee_Loaded" Grid.Column="1" Grid.Row="1" SelectedItem="{Binding Path=Annee, UpdateSourceTrigger=PropertyChanged}">
    .....
    <ListBox Height="125" SelectionChanged="ChoixMois_SelectionChanged" Name="ChoixMois"  DockPanel.Dock="Left" IsSynchronizedWithCurrentItem="True"  ItemsSource="{Binding}" ItemTemplate="{DynamicResource ListeNDFDispo}"></ListBox>
    Et le codeBehind correspondant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CollectionView myColl =  (CollectionView)CollectionViewSource.GetDefaultView(tiFrais.DataContext);
    MyObject ndf = myColl.CurrentItem as MyObject;
    ndf.Annee = (int)cbChoixAnnee.SelectedItem;
    myColl.Refresh();
    Je ne comprends pas pourquoi, sachant que les autres champs de ma fen^tre eux se mettent bien à jour.

  2. #2
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Par défaut
    T'as essayé un Clear sur la CollectionView avant le Refresh ? Je crois qu'il y a un truc comme ça à faire avant...

  3. #3
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Ya pas de méthode Clear sur la CollectionView

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Donc si je comprend bien: lors de la mise à jour, l'objet métier est bien changé mais pas l'affichage. Seulement, si tu masques et réaffiches ton formulaire (ou ce qui doit etre mis à jour), cela marche ?


    Dans ce cas, il faut que ton objet métier implémente l'interface INotifyPropertyChanged


    A+

  5. #5
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Oui c'est presque ça, sauf que ca ne se met jamais à jours. C'est juste quand j'enregistre les données dans ma source de données (ici un fichier XML) et que je redélarre mon application (et donc chargement du XML) que c'est à jour. Ce qui montre que les données sont bien mises à jour, mais pas l'affiche.

    Mon business object implémente bien INotifyPropertyChanged, mais rien n'y fait

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    J'avais eu le même problème et INotifyPropertyChanged a été la solution....

    Tu as bien implémente INotifyPropertyChanged sur toutes tes propriétés ?

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/06/2009, 21h41
  2. [WPF] Probléme de binding dans un UserControl :(
    Par UNi[FR] dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 17/07/2008, 15h51
  3. [WPF] Problème de binding
    Par tomlev dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 04/02/2008, 14h08
  4. [WPF] Problème de binding entre une SortedList et une ListBox
    Par Invité dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 10/12/2007, 13h20
  5. [WPF] Problème de binding
    Par Invité dans le forum Framework .NET
    Réponses: 42
    Dernier message: 06/11/2007, 11h28

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