【问题标题】:WPF Prism Loading views to Region, previous view is not removedWPF Prism 将视图加载到区域,以前的视图不会被删除
【发布时间】:2013-09-27 10:47:59
【问题描述】:

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

  1. 我有一个区域,我注册了一个这样的视图

    _container.RegisterType(typeof(Object), typeof(MgpOptions),typeof(MgpOptions).FullName);
    
    _container.RegisterType(typeof(Object), typeof(SgpOptions), typeof(SgpOptions).FullName);
    
  2. 然后我像这样导航到它

    _regionManager.Regions[RegionNames.AppBarRegion].NavigationService.RequestNavigate(typeof(MgpOptions).FullName);`
    
  3. 在总和按钮单击事件中,我会像这样导航到 SgOptions 视图

    _regionManager.Regions[RegionNames.AppBarRegion].RequestNavigate(typeof(SgpOptions).FullName);
    

我的问题是当第三步完成时,两个视图都出现在该区域中 我只想一次显示一个视图。

【问题讨论】:

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

标签: c# .net wpf prism


【解决方案1】:

请考虑以下情况,因为 Prism 的区域会根据它们所适应的控件而有所不同:

  • 如果您使用的是 ItemsControl,则您有一个 AllActiveRegion 区域类型,它基本上是一个永远不会停用其视图的区域,因此,它的所有视图都将是被视为活跃。在这种情况下,导航到另一个视图不会停用前一个视图。

相反,您需要使用 ContentControl 将区域配置为 SingleActiveRegion。这种类型的区域只允许一个视图同时处于活动状态。所以在导航之前的视图时确实会停用

您可以在Prism Region Overview 部分找到更多相关信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多