Précédent   Forum du club des développeurs et IT Pro > Dotnet > Développement Windows > WinRT
WinRT Forum d'entraide sur le développement d'applications Metro pour Windows 8 avec WinRT
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/08/2012, 11h58   #1
NioxyBrown
Invité de passage
 
Homme Régis NIOX
Inscription : 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.
NioxyBrown est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2012, 15h03   #2
john-thiriet
Membre habitué
 
Homme John Thiriet
Développeur .NET
Inscription : juin 2007
Messages : 64
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 : 64
Points : 111
Points : 111
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.
john-thiriet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/08/2012, 18h57   #3
NioxyBrown
Invité de passage
 
Homme Régis NIOX
Inscription : 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
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é)
NioxyBrown est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2012, 19h12   #4
Nathanael Marchand
Rédacteur/Modérateur

 
Avatar de Nathanael Marchand
 
Homme Nathanael Marchand
Expert .Net So@t
Inscription : octobre 2008
Messages : 3 521
Détails du profil
Informations personnelles :
Nom : Homme Nathanael Marchand
Âge : 26
Localisation : France, Paris (Île de France)

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

Informations forums :
Inscription : octobre 2008
Messages : 3 521
Points : 7 961
Points : 7 961
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
Nathanael Marchand est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/08/2012, 00h06   #5
john-thiriet
Membre habitué
 
Homme John Thiriet
Développeur .NET
Inscription : juin 2007
Messages : 64
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 : 64
Points : 111
Points : 111
Nathanaël a très bien résumé la chose :-)
john-thiriet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2012, 11h38   #6
NioxyBrown
Invité de passage
 
Homme Régis NIOX
Inscription : 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
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!
NioxyBrown est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2012, 09h16   #7
john-thiriet
Membre habitué
 
Homme John Thiriet
Développeur .NET
Inscription : juin 2007
Messages : 64
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 : 64
Points : 111
Points : 111
N'oublie pas de marquer le thread comme résolu si la réponse te convient alors
john-thiriet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2012, 11h46   #8
NioxyBrown
Invité de passage
 
Homme Régis NIOX
Inscription : 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
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?
NioxyBrown est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2012, 11h57   #9
Nathanael Marchand
Rédacteur/Modérateur

 
Avatar de Nathanael Marchand
 
Homme Nathanael Marchand
Expert .Net So@t
Inscription : octobre 2008
Messages : 3 521
Détails du profil
Informations personnelles :
Nom : Homme Nathanael Marchand
Âge : 26
Localisation : France, Paris (Île de France)

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

Informations forums :
Inscription : octobre 2008
Messages : 3 521
Points : 7 961
Points : 7 961
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
Nathanael Marchand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2012, 13h15   #10
john-thiriet
Membre habitué
 
Homme John Thiriet
Développeur .NET
Inscription : juin 2007
Messages : 64
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 : 64
Points : 111
Points : 111
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 :-)
john-thiriet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h35.


 
 
 
 
Partenaires

Hébergement Web