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 :

[MVVM] ViewModel commun à deux Views


Sujet :

Windows Phone .NET

  1. #1
    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 [MVVM] ViewModel commun à deux Views
    Bonjour,

    J'ai un petit problème de compréhension sur le mécanisme à mettre en place pour mon application.

    Je m'explique:

    J'ai un modèle de données qui est le suivant:

    Une classe Categories qui comprend une ObservableCollection de SubCategories qui comprend elle même une ObsevableCollection Elements.

    Dans ma vue principale j'utilise un contrôle Pivot qui m'affiche les données comme suit:

    - PivotItem1 affiche les Categories via une ListBox1
    - PivotItem2 affiche les SubCategories via une ListBox2 de la Category sélectionnée dans le ListBox1
    - PivotItem3 affiche les Elements via une Listbox3 de la SubCategory sélectionné dans ListBox2.

    Chaque ListPicker est bindé comme suit:

    - ListBox1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemsSource="{Binding Path=Categories}" SelectedItem="{Binding Path=SelectedCategory}"
    - ListBox2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemsSource="{SelectedCategory.SubCategories}" SelectedItem="{Binding Path=SelectedSubCategory}"
    - ListBox3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemsSource="{Binding Path=SelectedSubCategory.Elements}" SelectedItem={Binding Path=SelectedElement}"
    Donc jusque là tout se passe bien quand je sélectionne la catégorie j'ai bien que ses propres sous catégories etc....

    Le problème arrive pour la création d'un élément dont le scénario est le suivant:

    Je souhaites permettre à l'utilisateur de soit:

    - Créer un Element en sélectionnant au préalable une Category et/ou une SubCategory.

    - Créer un Element sans rien sélectionner.

    Le tout à partir d'un seul et unique ApplicationBarButton.

    Pour la création d'un Element j'utilise une autre View qui reprend les données sélectionnée ou non dans la View principale.

    Le problème est de faire la synchro entre les deux Views. Donc je me suis dit que j'allais utiliser le même ViewModel et ainsi Binder les même élément de ce fait lorsque l'utilisateur change sa sélection dans la View qui permet d'ajouter un élément les sélections se mettent à jour dans la vue principale.

    Mais le problème c'est que ça ne fonctionne pas !

    si je change la sélection dans la deuxième View et que je retourne dans la View principale il m'indique un problème IndexOutOfRange.

    Désolé c'est un peu long mais c'est pour avoir plus de clarté sur le sujet.

    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

  2. #2
    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
    C'est la faute au ListPicker qui est vraiment buggé. J'ai eu beaucoup de problèmes avec ce contrôle.

    Le mieux dans ton cas c'est d'utiliser 2 VM. Ca devrait pas trop poser de problème normalement.
    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. #3
    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
    Hello,

    J'ai apporté une petite correction à l'énoncé du problème car j'affiche mes données dans 3 ListBox et non 3 ListPicker.

    Les ListPicker sont utilisés ensuite dans la View pour ajouter l'Element.

    Je ne sais pas si ça change quelque chose !

    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

  4. #4
    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
    Effectivement je viens de remplacer les ListPicker par des ComboBox et y a plus de problèmes !!

    Y a t il d'autres trucs à savoir sur le ToolKit dans le même genre ?

    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

  5. #5
    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
    Non c'est le seul problème que j'ai rencontré avec le Toolkit.
    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. #6
    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,

    c'est dommage car il est sympa l'affichage obtenu par le ListPicker !

    J'ai essayé le ComboBox mais l'effet est moins sympa et moins pratique....

    Encore 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

  7. #7
    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
    Je reviens sur le sujet...

    J'ai du mal à voir comment faire pour mettre à jour les sélections faites dans la View d'ajout d'Element dans la View principale si j'utilise deux VMs !

    Je penses que la méthode la plus propre serait d'utiliser le système de messagerie mais j'ai encore du mal avec ça !

    J'ai dans un premier temps utiliser les Setters des propriétés pour mettre à jour les infos mais je ne penses pas que ce soit "propre" !

    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

  8. #8
    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
    C'est ca il faut utiliser le Messenger. Sinon tu peux passer comme tu as dit par les setter mais comme tu l'as fait remarqué c'est pas super propre (mais tu as le droit de le faire).
    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]

  9. #9
    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,

    je vais regarder ça alors

    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

  10. #10
    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
    Pour information, il y a ça qui semble parler de ce problème....

    http://silverlight.codeplex.com/workitem/7561

    à suivre....
    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.

Discussions similaires

  1. transition entre deux views
    Par hzaioua dans le forum Flex
    Réponses: 0
    Dernier message: 18/03/2009, 12h54
  2. Valeurs communes à deux tableaux
    Par rambc dans le forum Général Python
    Réponses: 6
    Dernier message: 08/01/2009, 20h54
  3. Vue commune à deux tables
    Par Asmodean dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/04/2007, 12h09
  4. [XPath] Parent commun à deux éléments
    Par nicolas66 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/03/2007, 22h52
  5. variable commune à deux userforms
    Par Melimelo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 20/07/2006, 13h32

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