Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10
  1. #1
    Invité de passage
    Homme Profil pro Régis NIOX
    Inscrit en
    juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : Homme Régis NIOX
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : juillet 2012
    Messages : 4
    Points : 1
    Points
    1

    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 habitué
    Homme Profil pro John Thiriet
    Développeur .NET
    Inscrit en
    juin 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Nom : Homme John Thiriet
    Localisation : France

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

    Informations forums :
    Inscription : juin 2007
    Messages : 65
    Points : 110
    Points
    110

    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
    Invité de passage
    Homme Profil pro Régis NIOX
    Inscrit en
    juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : Homme Régis NIOX
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : juillet 2012
    Messages : 4
    Points : 1
    Points
    1

    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/Modérateur

    Avatar de Nathanael Marchand
    Homme Profil pro Nathanael Marchand
    Expert .Net So@t
    Inscrit en
    octobre 2008
    Messages
    3 614
    Détails du profil
    Informations personnelles :
    Nom : Homme Nathanael Marchand
    Âge : 28
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : octobre 2008
    Messages : 3 614
    Points : 8 020
    Points
    8 020

    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 habitué
    Homme Profil pro John Thiriet
    Développeur .NET
    Inscrit en
    juin 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Nom : Homme John Thiriet
    Localisation : France

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

    Informations forums :
    Inscription : juin 2007
    Messages : 65
    Points : 110
    Points
    110

    Par défaut

    Nathanaël a très bien résumé la chose :-)

  6. #6
    Invité de passage
    Homme Profil pro Régis NIOX
    Inscrit en
    juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : Homme Régis NIOX
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : juillet 2012
    Messages : 4
    Points : 1
    Points
    1

    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 habitué
    Homme Profil pro John Thiriet
    Développeur .NET
    Inscrit en
    juin 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Nom : Homme John Thiriet
    Localisation : France

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

    Informations forums :
    Inscription : juin 2007
    Messages : 65
    Points : 110
    Points
    110

    Par défaut

    N'oublie pas de marquer le thread comme résolu si la réponse te convient alors

  8. #8
    Invité de passage
    Homme Profil pro Régis NIOX
    Inscrit en
    juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : Homme Régis NIOX
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : juillet 2012
    Messages : 4
    Points : 1
    Points
    1

    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/Modérateur

    Avatar de Nathanael Marchand
    Homme Profil pro Nathanael Marchand
    Expert .Net So@t
    Inscrit en
    octobre 2008
    Messages
    3 614
    Détails du profil
    Informations personnelles :
    Nom : Homme Nathanael Marchand
    Âge : 28
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : octobre 2008
    Messages : 3 614
    Points : 8 020
    Points
    8 020

    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 habitué
    Homme Profil pro John Thiriet
    Développeur .NET
    Inscrit en
    juin 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Nom : Homme John Thiriet
    Localisation : France

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

    Informations forums :
    Inscription : juin 2007
    Messages : 65
    Points : 110
    Points
    110

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •