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 Phone .NET Discussion :

[WP7] ObservableCollection qui ne met pas à jour le ListBox


Sujet :

Windows Phone .NET

  1. #21
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    Bon alors à tête reposée ça change pas grand chose !!!!

    j'ai l'impression que ObservableCollection ça sert pas à grnad chose puisqu'on ne peut pas accéder à sa propriété Items et donc on ne peut rien harger dedans (Genre des données qui viennent de l'IsolatedStorage).

    Là j'ai du mal à voir la chaîne complète de chargement des données, transfert dans le ViewModel et affichage !

    je trouve cette pattern franhement débile en fait (bon je dis ça car j'ai franchement les boules)

    en fait je vois pas comment on peut s'en sortir sans créer une variable globale à l'application (variable qui représente les données qui viennent de l'IsolatedStorage par exemple).

    On est forcément obligé de créer une variable en mémoire et de la relier aux ViewModels sinon ça ne peut pas fonctionner !

    Non?
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  2. #22
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par DotNET74 Voir le message
    Non?
    Non...

    Une ObservableCollection<T> c'est comme une List<T>. Est-ce qu'une List a une propriete Items ??!! NON !

    Alors c'est pareil tu fais juste taCollection.Add(...) ou taCollection[index] ou alors un foreach dessus si tu veux tout.

    Code c# : 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
    public ObservableCollection<string> People { get; set; }
     
    public MainViewModel()
    {
       People = new ObservableCollection<string>();
    }
     
    public void GetData()
    {
       MonService service = new MonService();
       service.GetPeopleCompleted += (o, e) => 
       {
          foreach(var person in e.Result)
          {
             People.Add(person);
          }
       }; 
       service.GetPeople();
    }
     
    public void AddPerson(string person)
    {
       People.Add(person);
    }

    Y'a quoi de complique franchement ici ?!
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  3. #23
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    ben en fait je suis complètement perdu, je n'arrive pas à comprendre la chaîne dans son ensemble....
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  4. #24
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    et le People.Add(Person) si tu veux le faire depuis une autre page cela se passe comment ?
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  5. #25
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par DotNET74 Voir le message
    et le People.Add(Person) si tu veux le faire depuis une autre page cela se passe comment ?
    Ben avec commande.

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <TextBox x:Name="txtPerson" />
    <Button cmd:Command="{Binding Path=AddPersonCommand}" cmd:CommandParameter="{Binding Path=Text, ElementName=txtPerson"} Content="Add"  />

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    AddPersonCommand = new RelayCommand<string>(p => AddPerson(p));

    Non franchement je vois pas de probleme.

    Tu as un ViewModel qui appelle un service qui retourne des donnes et qui remplis sa collection avec les donnees retournees.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  6. #26
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    ben les problèmes que je vois sont les suivants:

    je penses que si l'affichage des données est sur la Page1 et que l'ajout se fait par la Command qui se trouve sur la Page2 là ça coince car la Page2 ignore tout de la Page1.

    donc on ajoute depuis la Page2 mais dans quoi ?
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  7. #27
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par DotNET74 Voir le message
    ben les problèmes que je vois sont les suivants:

    je penses que si l'affichage des données est sur la Page1 et que l'ajout se fait par la Command qui se trouve sur la Page2 là ça coince car la Page2 ignore tout de la Page1.

    donc on ajoute depuis la Page2 mais dans quoi ?
    Mais ton ViewModel est global. Il est pas recreer a chaque fois. Tu le crees au debut de ton application et pis c'est tout.

    Donc tu es dans ta Page1, tu affiches tes donnes de ton MainViewModel. Tu vas sur la Page2 qui est relie au MEME ViewModel. Tu ajoutes un objet, tu reviens sur la Page1 qui est toujours relie au meme ViewModel, ton binding est refait et hop ton objet est ajoute dans ta liste.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  8. #28
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    désolé mais je ne vois pas comment l'ajouter depuis la page2 et dans quoi l'ajouter surtout !
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  9. #29
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par DotNET74 Voir le message
    désolé mais je ne vois pas comment l'ajouter depuis la page2 et dans quoi l'ajouter surtout !
    Je comprends pas de quoi tu parles...

    Depuis tout a l'heure je te montrer que ton ViewModel contient une ObservableCollection<string> qui est donc le truc qui contient tous tes objets (en l'occurence ici des string). Cette collection est remplie par ta methode GetData (que tu appelles quand tu veux).

    Ta Page1 est bindee sur ton ViewModel. Cette page contient une ListBox qui est bindee sur ton ObservableCollection<string>, tu as donc une ListBox qui affiches toute les string qui sont renvoyees par ton WebService.

    C'est bon jusque la ?

    Bon ensuite tu navigues sur ta Page2 (je sais pas comment) qui est aussi bindee sur ton ViewModel (le meme que celle de Page1, la meme reference), tu as donc acces aux memes proprietes (cad ta collection mais aussi la commande AddPersonCommand). Tu as une TextBox et un Bouton, tu tapes qq chose dans la TextBox et tu appuies sur le bouton. Ca appelle ta commande qui ne fait que ajouter dans ta collection (celle qui est deja remplie par ton service, elle a pas changee elle est toujours la) que le texte tape dans ton TextBox. Tu as donc 1 objet de plus dans ta collection (ton ObservableCollection). Tu appuies sur le bouton Back, ca revient sur ta Page1. Ta ListBox redemande la collection pour effecuter son Binding et la reaffiches tes elements (les memes que tout a l'heure + celui que tu viens d'ajouter).

    Si c'est toujours pas clair la, je te dirais simplement d'abandonner le developpement...
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  10. #30
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    ok,

    j'avais pas percuter que les pages avaient le même ViewModel !!

    je croyais que chaque View avait son propre ViewModel et qu'ils dialoguaient entre eux via le Locator !
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  11. #31
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    depuis le code behind de ma page 2 je ne vois rien comme propriété du ViewModel !

    et je ne peux pas utiliser le système de commande car j'utilise l'ApplicationBar !

    arfff.............
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  12. #32
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par DotNET74 Voir le message
    depuis le code behind de ma page 2 je ne vois rien comme propriété du ViewModel !

    et je ne peux pas utiliser le système de commande car j'utilise l'ApplicationBar !

    arfff.............
    Et comment tu fais pour tenter d'acceder a ton ViewModel a partir du code behind de ta page 2 ?

    Pour l'ApplicationBar on a deja resolu ca dans un autre thread... Vous etes plusieurs a poster avec le meme compte ou quoi ??
    Je rappelle : tu prends ton ViewModel et tu appelles directement ta commande...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ViewModelLocator.Current.MainViewModel.AddPersonCommand.Execute(txtPerson.Text);
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  13. #33
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    non je suis tout seul !

    j'ai essayé de mettre en place deux messages, un pour sauver les données et l'autre pour les charger mais ça fonctionne pas, d'où ma question relative à l'ApplicationBar.....

    maintenant je ne connaissais pas le truc du ViewModelLocator.Current......

    désolé et merci
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [A-03] UPDATE qui ne met pas à jour
    Par Milyshyn76 dans le forum VBA Access
    Réponses: 2
    Dernier message: 10/11/2008, 10h15
  2. [MySQL] update qui ne met pas à jour avec mysql
    Par wyllos dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/09/2008, 11h59
  3. Réponses: 2
    Dernier message: 05/10/2006, 08h24
  4. Combobox.text qui ne se met pas à jour
    Par davels dans le forum Delphi
    Réponses: 6
    Dernier message: 21/08/2006, 10h29
  5. un update qui ne met pas à jour
    Par dor_boucle dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/10/2005, 09h31

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