C# 在prism中[PartCreationPolicy(CreationPolicy.Shared)]时导航不工作
在我的prism应用程序中,我想创建视图的单个共享实例。当我第一次尝试导航时,它工作正常,但当我第二次尝试导航时,它不工作。如果我将C# 在prism中[PartCreationPolicy(CreationPolicy.Shared)]时导航不工作,c#,mef,wpf-4.0,prism-4,C#,Mef,Wpf 4.0,Prism 4,在我的prism应用程序中,我想创建视图的单个共享实例。当我第一次尝试导航时,它工作正常,但当我第二次尝试导航时,它不工作。如果我将PartCreationPolicy从Shared更改为NonShared,它可以工作,但会给我一个新实例。有没有其他方法可以选择 [Export(ViewNames.AppView)] [PartCreationPolicy(CreationPolicy.Shared)] public partial class AppMain : UserControl {
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
属性的信息。您能否更具体地说明“它不工作”的含义?你可能还想解释一下为什么你希望这是一个单身汉。你可能会发现实际的问题herehttp://stackoverflow.com/questions/16741667/exception-region-with-the-given-name-is-already-registered