C# WPF Prism正在将视图加载到区域,以前的视图不会被删除

C# WPF Prism正在将视图加载到区域,以前的视图不会被删除,c#,.net,wpf,prism,C#,.net,Wpf,Prism,我是WPF Prism的新手,我的问题是这个 我有一个区域,我注册了这样一个视图 _container.RegisterType(typeof(Object), typeof(MgpOptions),typeof(MgpOptions).FullName); _container.RegisterType(typeof(Object), typeof(SgpOptions), typeof(SgpOptions).FullName); _regionManager.Regions[Regio

我是WPF Prism的新手,我的问题是这个

  • 我有一个区域,我注册了这样一个视图

    _container.RegisterType(typeof(Object), typeof(MgpOptions),typeof(MgpOptions).FullName);
    
    _container.RegisterType(typeof(Object), typeof(SgpOptions), typeof(SgpOptions).FullName);
    
    _regionManager.Regions[RegionNames.AppBarRegion].NavigationService.RequestNavigate(typeof(MgpOptions).FullName);`
    
    _regionManager.Regions[RegionNames.AppBarRegion].RequestNavigate(typeof(SgpOptions).FullName);
    
  • 然后我像这样导航到它

    _container.RegisterType(typeof(Object), typeof(MgpOptions),typeof(MgpOptions).FullName);
    
    _container.RegisterType(typeof(Object), typeof(SgpOptions), typeof(SgpOptions).FullName);
    
    _regionManager.Regions[RegionNames.AppBarRegion].NavigationService.RequestNavigate(typeof(MgpOptions).FullName);`
    
    _regionManager.Regions[RegionNames.AppBarRegion].RequestNavigate(typeof(SgpOptions).FullName);
    
  • 在sum按钮上单击event I导航到SgOptions视图,如下所示

    _container.RegisterType(typeof(Object), typeof(MgpOptions),typeof(MgpOptions).FullName);
    
    _container.RegisterType(typeof(Object), typeof(SgpOptions), typeof(SgpOptions).FullName);
    
    _regionManager.Regions[RegionNames.AppBarRegion].NavigationService.RequestNavigate(typeof(MgpOptions).FullName);`
    
    _regionManager.Regions[RegionNames.AppBarRegion].RequestNavigate(typeof(SgpOptions).FullName);
    
  • 我的问题是当第三步完成时,两个视图都出现在区域中
    我只想一次显示一个视图。

    考虑以下情况,因为棱镜的区域工作方式不同,取决于它们所适应的控件:

    • 如果您使用的是项目控件,则您有一个AllActiviteRegion区域类型,该区域基本上是一个从不停用其视图的区域,因此,其所有视图都将被视为活动的。在这种情况下,导航到另一个视图不会停用前一个视图
    相反,您需要使用ContentControl将区域配置为SingleActiveRegion。这种类型的区域只允许一个视图同时处于活动状态。因此,在导航之前的视图时,确实会停用


    您可以在第节中找到更多相关信息。

    我认为您的视图或视图模型需要实现IRegionMemberLifetime和KeepAlive,以便在导航时从区域中删除。