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

Silverlight Discussion :

Passage d'un écran à un autre et respect de MVVM


Sujet :

Silverlight

  1. #1
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut Passage d'un écran à un autre et respect de MVVM
    Bonjour,

    Je me pose actuellement la question de comment gérer la transition entre écrans, tout en respectant le pattern MVVM. Si j'ai bien tout compris à MVVM, la View et le ViewModel devraient être le plus indépendant possibles, quit à ignorer l'existence entre l'un et l'autre. (cf utilisation du locator dans le MVVM light Toolkit par exemple).
    A ce moment comment passer d'un écran à un autre (~navigation) et aussi, comment passer des paramètres ? Exemple:
    écran #1 => consultation de la liste des clients
    écran #2 => edition d'un client particulier sélectionné dans l'écran #1

    J'ai jeté un oeil à ce lien, mais c'est pas dispo en SL (uniquement WPF).

    Ce que j'ai fait pour l'instant, c'est un View/VieModel maître qui reçoit des messages et qui s'occupe d'afficher les bonens vues.

    Merci de vos suggestions!
    Christophe

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par chrisdot Voir le message
    comment passer des paramètres
    Tu peux utiliser la notion de Messenger, dispo dans le MVVM Light Toolkit, pour passer des messages d'un VM à un autre.

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Tu peux utiliser la notion de Messenger, dispo dans le MVVM Light Toolkit, pour passer des messages d'un VM à un autre.
    Merci Thomas, je me suis peut être mal exprimé, mais la question était plutôt: comment faire l'enchainement des écrans (sans intervention majeure dans le code behind des views)? (pas comment communiquer entre ViewModels)

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Le plus simple en général est d'utiliser un ViewModel maitre avec une notion d'élément courant (une propriété Current par exemple), et d'avoir un ContentControl bindé sur cette propriété, avec des DataTemplates pour chaque type de ViewModel. Pour changer de vue, tu changes la propriété Current, et le ContentControl se rafraichit en appliquant le DataTemplate qui correspond au Content actuel

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut
    Oui merci tomlev, c'est un peu ce genre de choses que je cjerchais, comme dans le lien que j'avais cité. Mais le typage du datatemplate en fonction du type est une fonctionnalité qui n'est que dans WPF et pas dans SL3.

    Tu pensais à un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <Window.Resources>
            <DataTemplate DataType="{x:Type ViewModel:GeneralSettingsViewModel}">
                <View:GeneralSettingsView/>
            </DataTemplate
            <DataTemplate DataType="{x:Type ViewModel:AdvancedSettingsViewModel}">
                <View:AdvancedSettingsView/>
            </DataTemplate>
        </Window.Resources>

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Mais le typage du datatemplate en fonction du type est une fonctionnalité qui n'est que dans WPF et pas dans SL3
    argh
    à chaque fois je me fais avoir...

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2004
    Messages : 57
    Par défaut même problème
    Salut à tous,

    j'ai eu beau chercher je n'ai pas trouver de réponse satisfaisante. d'où ma question qui peut paraitre simple.

    j'ai un projet silverlight 4. j'implémente le MVVM avec mvvm light.

    comment dans mon viewmodel puis je naviguer vers une autre view en respectant le mvvm ?

    merci à vous

  8. #8
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Ce que je fais en general, c'est de mettre une commande Navigate dans ma BaseViewModel et lorsque cette commande est lancee, je change le current ViewModel de mon ViewModel maitre pour le nouveau ViewModel passé en parametre (via un Messenger ou non c'est comme tu veux).

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Moi ce que je fais (en partant du principe qu'on est sur une application de type navigation), c'est que dans mon ViewModel de base, j'ai 2 méthodes OnNavigatedTo et OnNavigatedFrom, dont la première prend en paramètre le service de navigation et le context de navigation.

    Lors des méthodes OnNavigatedTo et OnNavigatedFrom du code behind, j'appelle ces mêmes méthodes sur mon VM, en passant les paramètres. Du coup, côté VM, je peux faire un:

    SvcNav.Navigate(....)

    Et je peux même récupérer les paramètres qui sont dans l'URL

Discussions similaires

  1. Passage d'un écran à un autre
    Par lucimed dans le forum Android
    Réponses: 2
    Dernier message: 02/12/2009, 17h13
  2. [Débutant][C#] IHM, passage d'un écran à un autre.
    Par walli_g dans le forum Windows Forms
    Réponses: 7
    Dernier message: 26/05/2006, 21h29
  3. Passage en plein écran
    Par Floréal dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/03/2005, 11h33
  4. Passage d'un enregistrement à un autre avec TAB
    Par Cécile154 dans le forum Access
    Réponses: 2
    Dernier message: 16/02/2005, 14h47
  5. [Eclipse][Jbuilder] Passage de l'un à l'autre
    Par Haroldh dans le forum Eclipse
    Réponses: 1
    Dernier message: 07/01/2005, 10h15

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