Comment naviguer dans les fenêtres avec MVVM Light for WPF?
Je viens de commencer un nouveau projet dans lequel la couche de présentation sera faite par WPF et MVVM Light par GalaSoft.
J'ai besoin de beaucoup de points de vue et il n'est pas clair pour moi comment gérer la navigation à travers les fenêtres.
Tout d'abord, les modèles proposés dans MVVM Light pour la création d'un nouveau "WPF MVVM Vue de" créer un nouveau Window
qui n'est pas possible de l'utiliser pour la navigation par image (je veux dire, en mettant une image dans mainView
et de changer le chemin d'accès source pour naviguer).
Dois-je tout simplement pour changer Window
à Page
pour toutes les vues que j'ai créer à l'aide de modèles?
Ou est-il un autre moyen d'effectuer la navigation en WPF avec le MVVM Light toolkit?
source d'informationauteur zero51
Vous devez vous connecter pour publier un commentaire.
J'ai l'habitude d'utiliser un
ContentControl
pour afficher du contenu dynamique. C'estContent
propriété est généralement lié à uneCurrentViewModel
propriété dans le parentViewModel
etDataTemplates
sont utilisés pour raconter WPF comment dessiner l'enfantViewModels
.De changer de vue, il suffit de modifier le
CurrentViewModel
propriété dans le parentViewModel
Vous pouvez trouver un exemple à cet article de la mine
Finalement je l'ai fait de cette façon.
En suivant l'idée de o_q, j'ai créé NavigationWindow comme MainWindow et changé tous les points de vue à la page.
Ensuite, j'ai créé une interface et une classe qui à l'aide de la Navigation:
Puis, dans le viewModelLocator j'ai créé tous les const string nedded pour stocker les chemins de mon point de vue:
Dans L'App.cs, dans le gestionnaire d'événements Application_Startup, avec l'aide de l'Unité du Cio, je me suis inscrit à un singleton de NavigationService:
Maintenant, dans mon ViewModelLocator, je peux enregistrer un "Galasoft" message d'attraper tous les événements et accédez à une page; dans le constructeur que j'ai:
De cette façon, je garde toutes les viewModels "ignorants"... ils ne savent rien au sujet de la navigation, je n'ai pas de code derrière.
Si j'en ai besoin pour naviguer à l'aide d'un bouton à partir d'un point de vue, je peut résoudre NavigationService de la viewModel et accédez à la Page dont j'ai besoin.
Et, plus important, il fonctionne!
Pour un navigables application, vous aurez envie de commencer l'affichage à être un
NavigationWindow
au lieu d'unWindow
Code derrière:
Le MVVM Light afficher les modèles de
Window
mais comme vous l'avez deviné, il vous suffit de le changer. Si vous voulez être en mesure de naviguer et de ce point de vue, faire unPage
.C'est la façon dont vous naviguez:
Code Derrière: