Comment obtenir la vue active actuelle dans une région en utilisant PRISM?
var vs = mRegionManager.Regions[RegionNames.MainRegionStatic].Views.ToList();
et je peux voir qu'il y a le code suivant :
mRegionManager.Regions[RegionNames.MainRegionStatic].ActiveViews
ce qui donne une liste de vue Active, mais je fais attacher ma région à un ContentControl qui a toujours une seule vue active. Suis-je mal compris ou est-il un moyen d'obtenir la seule vue active?
3 réponses
var singleView = regionManager.Regions["MyRegion"].ActiveViews.FirstOrDefault();
var singleView = regionManager.Regions["MyRegion"].ActiveViews.FirstOrDefault();
ce n'est pas correct, car il apportera juste n'importe quelle vue qui a été activée en premier. pas actuellement actif/affichage visible.
ne peut pas trouver une solution directe cependant, qui n'implique pas d'implémentation personnalisée sur View ou ViewModel.
eh Bien, vous pourriez utiliser le NavigationService
Journal
. Il prend note de toute la navigation qui a lieu dans votre application. Ainsi, vous pouvez obtenir le nom de la vue comme ceci:
string name = mRegionManager.Regions[RegionNames.MainRegionStatic].NavigationService.Journal.CurrentEntry.Uri;
alors vous pouvez obtenir la vue comme ceci:
mRegionManager.Regions[RegionNames.MainRegionStatic].GetView(name);
Sweet Droit? :)