Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在prism中[PartCreationPolicy(CreationPolicy.Shared)]时导航不工作_C#_Mef_Wpf 4.0_Prism 4 - Fatal编程技术网

C# 在prism中[PartCreationPolicy(CreationPolicy.Shared)]时导航不工作

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 {

在我的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
    属性的信息。

    您能否更具体地说明“它不工作”的含义?你可能还想解释一下为什么你希望这是一个单身汉。你可能会发现实际的问题herehttp://stackoverflow.com/questions/16741667/exception-region-with-the-given-name-is-already-registered