Prism Region 将新视图添加到区域时删除区域中的所有其他视图

问题描述

我已经实现了 Prism 选项卡的功能(来自 Pluralsight 教程),并且我有 ScopedRegionNavigationContentLoader 和 LoadContent 方法

当我导航到一个新视图时,LoadContent 方法调用,如果不存在则创建一个新视图。 此功能完美运行,但是当我将新创建的视图添加到该区域时,该区域的所有其他视图都将被删除 当我添加一个新视图时,ViewsOnCollectionChanged 事件将通过操作 NotifyCollectionChangedAction.Remove 调用

我检查了此事件的发生位置并注释了我的代码,但该视图仍从区域中删除。 我不确定我在这里缺少什么。也许有一些功能可以清除区域视图?

    public object LoadContent(IRegion region,NavigationContext navigationContext)
    {
        if (region == null)
            throw new ArgumentNullException(nameof(region));

        if (navigationContext == null)
            throw new ArgumentNullException(nameof(navigationContext));

        var candidateTargetContract = GetContractFromNavigationContext(navigationContext);

        var candidates = GetCandidatesFromregion(region,candidateTargetContract);

        var acceptingCandidates =
            candidates.Where(
                v =>
                {
                    if (v is INavigationAware navigationAware && !navigationAware.IsNavigationTarget(navigationContext))
                        return false;

                    if (!(v is FrameworkElement frameworkElement))
                        return true;

                    navigationAware = frameworkElement.DataContext as INavigationAware;

                    return navigationAware == null || navigationAware.IsNavigationTarget(navigationContext);
                });

        var view = acceptingCandidates.FirstOrDefault();

        if (view != null)
            return view;

        view = CreateNewRegionItem(candidateTargetContract);

        region.Add(view,null,CreateRegionManagerScope(view));
        region.Activate(view);

        return view;
    }

我使用的是最新版本的 Prism。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)