|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Régis NIOXInscription : juillet 2012 Messages : 4 ![]() |
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. |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() John ThirietDéveloppeur .NET Inscription : juin 2007 Messages : 64 ![]() |
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. |
|
10
|
|
|
#3 |
|
Invité de passage
![]() Régis NIOXInscription : juillet 2012 Messages : 4 ![]() |
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é) |
|
|
00
|
|
|
#4 | |
![]() ![]() ![]() Nathanael MarchandExpert .Net So@t Inscription : octobre 2008 Messages : 3 521 ![]() |
Citation:
__________________
Retrouvez moi sur : |
|
|
10
|
|
|
#5 |
|
Membre habitué
![]() John ThirietDéveloppeur .NET Inscription : juin 2007 Messages : 64 ![]() |
Nathanaël a très bien résumé la chose :-)
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Régis NIOXInscription : juillet 2012 Messages : 4 ![]() |
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!
|
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() John ThirietDéveloppeur .NET Inscription : juin 2007 Messages : 64 ![]() |
N'oublie pas de marquer le thread comme résolu si la réponse te convient alors
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Régis NIOXInscription : juillet 2012 Messages : 4 ![]() |
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? |
|
|
00
|
|
|
#9 | |
![]() ![]() ![]() Nathanael MarchandExpert .Net So@t Inscription : octobre 2008 Messages : 3 521 ![]() |
Citation:
__________________
Retrouvez moi sur : |
|
|
00
|
|
|
#10 |
|
Membre habitué
![]() John ThirietDéveloppeur .NET Inscription : juin 2007 Messages : 64 ![]() |
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 :-)
|
|
00
|
Copyright © 2000-2013 - www.developpez.com