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

WinRT Discussion :

Utilisation de Mvvm Light ToolKit avec différents csprojs [MVVM]


Sujet :

WinRT

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Utilisation de Mvvm Light ToolKit avec différents csprojs
    Bonjour,

    Je voudrais faire une application metro en utilisant Mvvm Light Toolkit.
    Afin de scinder le tout le plus possible, j'ai mis en place une solution avec un csproj par catégories:
    - un csproj pour mes Views
    - un csproj pour mes ViewModels
    - un csproj pour mes Models
    Pour l'instant mon ViewModel Locator est dans le csproj des Views.

    Le problème que j'ai se trouve au niveau des références.
    J'ai pour l'instant référencé mon csproj ViewModels dans le csproj Views, mais comment je navigue d'une page xaml à une autre en passant par les ViewModels qui sont dans un autre csproj?
    De plus comment puis utiliser par exemple RelayCommand() dans mon csproj ViewModels alors que les références se trouvent dans le csproj Views? A moins qu'il faille que je référence aussi dans le csproj ViewModels ce qu'il faut pour, c'est-à-dire les références de GalaSoft?

    Mon but étant de faire tout ça le plus "propre" possible.

    J'espère avoir été assez compréhensible

    Merci d'avance pour votre aide.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 116
    Points
    116
    Par défaut
    Bonjour,

    Le plus simple, rapide tout en étant très propre est de référencer MvvmLight dans les projets Views et ViewModels.

    Pour la navigation depuis un ViewModel tu pourras donc envoyer un message avec Messenger.Default.... de MvvmLight lequel message sera intercepté par ton application (dans MainPage.xaml.cs par exemple) pour faire lancer la navigation.

    En ce qui concerne ton ViewModelLocator il y a deux écoles ici. Moi je suis plutot partisan de mettre la class ViewModelLocator dans le projet ViewModels. Et de faire référence à ton projet ViewModels dans le projet Views et de l'utiliser directement.
    Sinon tu peux aussi utiliser le moteur d'IoC de MvvmLight. Tu déclare une interface IViewModelLocator et des interfaces pour chaque ViewModel dans une DLL à part et référencée par tout le monde. Et tu implémente cette interface IViewModelLocator dans le projet principal. Dans le projet principal tu enregistre une instance à ton IViewModelLocator dans le moteur d'IoC de MvvmLight. A chaque fois que tu voudras récupérer une instance tu feras donc ServiceLocator.Current.GetInstance<IViewModelLocator>().
    Cette seconde méthode peux paraitre élégante mais elle complexifie énormément les choses pour un gain nul selon moi.

    A toi de voir du coup.

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci John pour la réponse!

    C'est vrai que c'est plus logique de mettre le ViewModelLocator dans le csproj ViewModels...

    En ce qui concerne le découpage, la deuxième option (le moteur d'IoC de MvvmLight) me parait pourtant plus simple.
    A quel niveau cela risque de poser problème ou de se complexifier? (je débute, j'ai donc du mal à voir certaines subtilité)

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par NioxyBrown Voir le message
    Merci John pour la réponse!

    C'est vrai que c'est plus logique de mettre le ViewModelLocator dans le csproj ViewModels...

    En ce qui concerne le découpage, la deuxième option (le moteur d'IoC de MvvmLight) me parait pourtant plus simple.
    A quel niveau cela risque de poser problème ou de se complexifier? (je débute, j'ai donc du mal à voir certaines subtilité)
    Si tu as 5 ViewModels, ca te fait une déclarations des 5 classes ViewModels, 1 classe pour le ViewModelLocator, 5 interfaces pour les ViewModels et une interface pour le ViewModelLocator. Ce qui commence à faire beaucoup

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 116
    Points
    116
    Par défaut
    Nathanaël a très bien résumé la chose :-)

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Vu comme ça tout de suite c'est pas la même chose...
    Je vais essayer dans le meilleur des cas de tester les deux types de découpages (j'essaye d'en apprendre un maximum, le meilleur moyen est de tout essayer )

    Merci encore pour vos conseils!

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 116
    Points
    116
    Par défaut
    N'oublie pas de marquer le thread comme résolu si la réponse te convient alors

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Euh je croyais l'avoir fait...
    Le fait qu'il y ai écrit: "[Résolu]" veut dire que j'ai marqué le thread comme résolu non?

  9. #9
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par NioxyBrown Voir le message
    Euh je croyais l'avoir fait...
    Le fait qu'il y ai écrit: "[Résolu]" veut dire que j'ai marqué le thread comme résolu non?
    En effet! Mais ca peut aussi être un modo de passage

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 116
    Points
    116
    Par défaut
    Il me semble que lorsque j'avais dit celà l'article n'était pas en résolu et il l'a été un peu après. Mais je me trompe peut-être. Bref c'est pas grave le tout c'est qu'il le soit maintenant :-)

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 23/08/2011, 14h26
  2. mvvm light toolkit pour application WPF
    Par helper_moi dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 21/06/2011, 14h45
  3. [SL4]MVVM Light toolkit + Messenger
    Par chris81 dans le forum Silverlight
    Réponses: 2
    Dernier message: 20/07/2010, 09h04
  4. AJAX-> Utiliser le Google Web Toolkit avec le framework ZEND
    Par Ericx_25 dans le forum Zend Framework
    Réponses: 1
    Dernier message: 25/06/2008, 14h03

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