none
Absence de mise à jour d'un Binding [MVVM Light] RRS feed

  • Question

  • Bonsoir everyone :)

    J'ai un petit soucis avec un de mes ViewModels (MVVM Light).

    J'ai crée un petite classe perso pour contenir des infos de tout types (char/string/int). Lors du chargement de mon MVVM, différentes fonctions permettent de remplir ma variable globale de type "classe perso".

    Le soucis, c'est que lorsque je binde mes propriétés de cette variable globale sur une page, bah les valeurs des int et double ne sont pas mise à jour au fur et à mesure du loading de la page. J'ai même rajouter un RaisePropertyChanged("ma_variable_globale"); à la fin du chargement de mes données, mais malheureusement ça ne modifie rien au problème.

    Pourtant, c'est bien bindé, puisque j'ai une partie du code qui est généré automatiquement quand on est en true sur InDesignerMode, et dans ce cas, les variables sont bien affichées dans Blend. (Je précise que j'ai aussi vérifier via le debugger, ça se remplit bien également quand je get les données depuis ma source online).

    Merci d'avance :)

    lundi 27 février 2012 22:00

Réponses

  • As tu hérité d'INotifyPropertyChanged dans ta class IEpisode ?

    Je n'ai pas le code de cette classe, mais je pense que tu n'as pas du en hériter, du coup tu n'appelles pas RaisePropertyChanged sur srt_vf, srt_vo et note_audiance.

    • Marqué comme réponse Rbeuque74 samedi 3 mars 2012 00:07
    vendredi 2 mars 2012 16:19

Toutes les réponses

  • Bonjour,

    Il nous faudrait le code de ton VM et de ta view pour qu'on puisse voir ce qui ne va pas :)


    Pour que la discussion puisse être identifiée comme résolue merci de marquer les réponses qui vous ont aidées à solutionner votre problème comme "réponse".

    mardi 28 février 2012 08:41
  •  RaisePropertyChanged("ma_variable_globale"); doit être fait par la classe contenant la propriété en question, pas par une autre.

    Je pense que c'est ton probleme

    Rudy


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    mardi 28 février 2012 22:01
    Modérateur
  •  RaisePropertyChanged("ma_variable_globale"); doit être fait par la classe contenant la propriété en question, pas par une autre.

    Je fais bien le RaisePropertyChanged dans la classe contenant la propriété. Pas de soucis à ce niveau là.

    Voici le code, un poil raccourcis, normalement y'a que la partie utile.

    [[Retrait du code]]

    • Modifié Rbeuque74 samedi 3 mars 2012 00:07 retrait du code source
    mercredi 29 février 2012 07:49
  • Bonjour,

    Maintenant que nous avons ton code, pourrais-tu nous dire quel propriété ne se met pas à jour ?

    vendredi 2 mars 2012 14:54
  • Bonjour,

    Les int/double ne se mettant pas à jour :

    Episode.srt_vf, Episode.srt_vo, Episode.note_audiance

    Merci d'avance :)

    vendredi 2 mars 2012 15:42
  • As tu hérité d'INotifyPropertyChanged dans ta class IEpisode ?

    Je n'ai pas le code de cette classe, mais je pense que tu n'as pas du en hériter, du coup tu n'appelles pas RaisePropertyChanged sur srt_vf, srt_vo et note_audiance.

    • Marqué comme réponse Rbeuque74 samedi 3 mars 2012 00:07
    vendredi 2 mars 2012 16:19
  • Effectivement, la classe EpisodeI n'implémentait pas INotifyProperyChanged.

    En balancant un event, effectivement ça fonctionne ... !


    PS : étrange tout de même car les autres champs string se mette bien à jour sans pour autant que EpisodeI héritait de INotifyPropertyChanged.

    Attention : EpisodeI n'est pas une interface, juste une classe (avec une Image dedans, c'est pour ça le I ^^)

    Merci :)


    • Modifié Rbeuque74 vendredi 2 mars 2012 19:14 closed
    vendredi 2 mars 2012 19:08