当[PartCreationPolicy(CreationPolicy.Shared)]在棱镜中时,导航不工作
本文关键字:棱镜 导航 工作 PartCreationPolicy CreationPolicy Shared | 更新日期: 2023-09-27 18:14:15
在我的prism应用程序中,我想创建一个视图的单个共享实例。当我第一次尝试导航时,它工作得很好,但当我第二次尝试时,它就不起作用了。如果我把PartCreationPolicy
从Shared
变成NonShared
,它可以工作,但它会给我一个新的实例。有没有其他的方法来做这件事?
[Export(ViewNames.AppView)]
[PartCreationPolicy(CreationPolicy.Shared)]
public partial class AppMain : UserControl
{
public AppMain()
{
InitializeComponent();
}
}
您可能想要在您的视图中使用Prism的KeepAlive
值。此值决定在从该区域导航时是否应从该区域删除视图。有两种方法:
-
使用
RegionMemberLifetime
属性[RegionMemberLifetime(KeepAlive = false)] [Export(ViewNames.AppView)] [PartCreationPolicy(CreationPolicy.Shared)] public partial class AppMain : UserControl { public AppMain() { InitializeComponent(); } }
-
实现
IRegionMemberLifetime
接口[Export(ViewNames.AppView)] [PartCreationPolicy(CreationPolicy.Shared)] public partial class AppMain : UserControl, IRegionMemberLifetime { public AppMain() { InitializeComponent(); } public bool KeepAlive { get { return false; } } }
您可以在这里阅读更多关于KeepAlive
属性的信息