在棱镜中[PartCreationPolicy(CreationPolicy.Shared)]时导航无法正常工作

时间:2013-05-19 14:48:39

标签: c# mef wpf-4.0 prism-4

在我的prism应用程序中,我想创建一个视图的单个共享实例。当我第一次尝试导航时它工作正常,但是当我第二次试图它不工作时。如果我将PartCreationPolicyShared更改为NonShared它可以正常运行,但它会给我一个新实例。是否有其他方法可以做到这一点?

[Export(ViewNames.AppView)]
[PartCreationPolicy(CreationPolicy.Shared)] 
public partial class AppMain : UserControl
{
    public AppMain()
    {
        InitializeComponent();
    }
}

1 个答案:

答案 0 :(得分:0)

您可能想要为您的视图使用Prism的KeepAlive值。此值确定在远离区域时是否应从区域中删除视图。您有两种方法:

  1. 使用RegionMemberLifetime属性

    [RegionMemberLifetime(KeepAlive = false)]
    [Export(ViewNames.AppView)]
    [PartCreationPolicy(CreationPolicy.Shared)] 
    public partial class AppMain : UserControl
    {
        public AppMain()
        {
            InitializeComponent();
        }
    }
    
  2. 实施IRegionMemberLifetime界面

    [Export(ViewNames.AppView)]
    [PartCreationPolicy(CreationPolicy.Shared)] 
    public partial class AppMain : UserControl, IRegionMemberLifetime
    {
        public AppMain()
        {
            InitializeComponent();
        }
    
        public bool KeepAlive
        {
            get { return false; }
        }
    }
    
  3. 您可以阅读有关KeepAlive属性here的更多信息。