在我的prism应用程序中,我想创建一个视图的单个共享实例。当我第一次尝试导航时它工作正常,但是当我第二次试图它不工作时。如果我将PartCreationPolicy
从Shared
更改为NonShared
它可以正常运行,但它会给我一个新实例。是否有其他方法可以做到这一点?
[Export(ViewNames.AppView)]
[PartCreationPolicy(CreationPolicy.Shared)]
public partial class AppMain : UserControl
{
public AppMain()
{
InitializeComponent();
}
}
答案 0 :(得分:0)
您可能想要为您的视图使用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
属性here的更多信息。