如何使用PRISM获取区域中的当前活动视图?

时间:2011-06-15 13:56:58

标签: c# wpf mvvm prism

我知道我可以在以下地区获取所有已注册的观看次数:

var vs = mRegionManager.Regions[RegionNames.MainRegionStatic].Views.ToList();

我可以看到有以下代码:

mRegionManager.Regions[RegionNames.MainRegionStatic].ActiveViews

给出了一个Active View列表,但是我的区域附加到一个ContentControl,它总是有一个ActiveView。我误解了还是有办法获得单一的活动视图?

3 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:5)

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

这是不正确的,因为它只会带来首先被激活的视图。不是当前有效/可见的视图。

无法找到直接解决方案,但这不涉及View或ViewModel上的自定义实现。

答案 2 :(得分:1)

好吧,您可以使用NavigationService Journal。它记录了应用程序中发生的所有导航。所以,你可以得到这样的视图名称:

string name = mRegionManager.Regions[RegionNames.MainRegionStatic].NavigationService.Journal.CurrentEntry.Uri;

然后你可以得到这样的观点:

mRegionManager.Regions[RegionNames.MainRegionStatic].GetView(name);
好吧,好吧? :)

相关问题