请帮忙。我使用Prism wpf + mef 6.1.0
通过属性
为每个地区注册所有视图 [ViewExport(RegionName = RegionNames.NavigatorRegion)]
[PartCreationPolicy(CreationPolicy.Shared)]
[ViewSortHint("1")]
public partial class AView: UserControl
{
}
[ViewExport(RegionName = RegionNames.NavigatorRegion)]
[PartCreationPolicy(CreationPolicy.Shared)]
[ViewSortHint("2")]
public partial class BView: UserControl
{
}
使用ContentControl
在shell中显示它们 <ContentControl prism:RegionManager.RegionName="{x:Static r:RegionNames.NavigatorRegion}"/>
我使用ContentControl,因为我只需要一个活动视图。但是BView总是首先显示,但我为它设置了[ViewSortHint(“2”)]。
有什么不对?当我删除BView时,AView显示首先正确。
答案 0 :(得分:1)
ViewSortHintAttribute
仅在您的地区支持同时显示多个观看时才有意义,例如ItemsControl
或TabControl
。
如果您想使用简单的ContentControl
(只能显示单个视图),则必须使用导航或视图注入。
如何注入视图,您可以阅读on MSDN:
IRegionManager
的引用。e.g:
IRegion mainRegion = regionManager.Regions[RegionNames.NavigatorRegion];
或者,您可以使用基于视图的导航。看一下这个documentation。
// Obtain region manager via DI
IRegionManager regionManager = ...;
regionManager.RequestNavigate(RegionNames.NavigatorRegion, new Uri("ViewA", UriKind.Relative));