Comment obtenir la vue active actuelle dans une région en utilisant PRISM?

<!-Je sais que je peux obtenir toutes les vues enregistrées dans une région avec :

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?

14
demandé sur pangabiMC 2011-06-15 17:56:57

3 réponses

var singleView = regionManager.Regions["MyRegion"].ActiveViews.FirstOrDefault();

12
répondu Navid Rahmani 2011-06-15 14:19:46
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.

5
répondu Ahmed 2011-12-05 03:24:42

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? :)

1
répondu Prince Owen 2018-06-05 16:26:00