1

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

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

1 回答 1

0

您可能想在KeepAlive您的视图中使用 Prism 的值。此值确定当您导航离开该区域时是否应将视图从该区域中移除。你有两种方法可以做到这一点:

  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; }
        }
    }
    

您可以在此处阅读有关该KeepAlive属性的更多信息。

于 2013-06-03T21:31:54.170 回答