MVVM et plusieurs fenêtres

Je suis dans les étapes de pré-conception d’une petite application que j’aimerai écrire en utilisant Caliburn.Micro et C # / WPF. J’apprends encore le cadre, mais j’aime ce que je vois jusqu’ici.

L’application que j’ai l’intention de créer est un utilitaire de recherche / parsing de mémoire de processus, avec une fonctionnalité de désassemblage et de navigation de la mémoire ASM. Ces trois problèmes – recherche / parsing, désassemblage ASM et navigation dans la mémoire – je souhaiterais être géré par trois fenêtres distinctes ou plus. La partie recherche / parsing comprendra le shell principal de l’application, tandis que les deux autres fonctions (qui peuvent être appelées plusieurs fois simultanément) utiliseront des fenêtres séparées invoquées à partir d’actions sur le shell.

Ma question est la suivante: comment lancer de nouvelles fenêtres à partir du modèle de vue shell (ou autre)? Je sais que je dois passer un autre type de modèle de vue pour le rendu dans une nouvelle fenêtre – mais c’est cette nouvelle activité de fenêtre qui me déroute.

Caliburn.Micro fournit un type WindowManager avec une méthode Show qui peut afficher un modèle de vue dans une nouvelle fenêtre et, si ce modèle de vue implémente les interfaces Caliburn.Micro appropriées, WindowManager garantira que le modèle de vue passe par le cycle de vie habituel (par exemple: il appelle OnActivate , OnDeactivate etc.). Si vos modèles de vue dérivent du type d’ Screen , ce sera le cas.

WindowManager implémente l’interface IWindowManager , vous pouvez donc injecter cette abstraction en tant que dépendance dans votre ShellViewModel.

Si la vue associée n’est pas une Window , mais un UserControl , le WindowManager va également enrouler le UserControl dans une Window pour pouvoir l’afficher.