棱镜mef ViewSortHint无法正常工作

时间:2016-04-09 09:43:07

标签: wpf prism mef

请帮忙。我使用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显示首先正确。

1 个答案:

答案 0 :(得分:1)

ViewSortHintAttribute仅在您的地区支持同时显示多个观看时才有意义,例如ItemsControlTabControl

如果您想使用简单的ContentControl(只能显示单个视图),则必须使用导航或视图注入。

如何注入视图,您可以阅读on MSDN

  1. 通过依赖注入获取对IRegionManager的引用。
  2. 获取要放置视图的区域。
  3. e.g:

    IRegion mainRegion = regionManager.Regions[RegionNames.NavigatorRegion];
    
    1. 将视图添加到区域(可选择删除以前添加的视图)。
    2. 或者,您可以使用基于视图的导航。看一下这个documentation

      // Obtain region manager via DI
      IRegionManager regionManager = ...;
      regionManager.RequestNavigate(RegionNames.NavigatorRegion, new Uri("ViewA", UriKind.Relative));