问题描述
我已经实现了 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 (将#修改为@)