首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包装PrismForms NavigationService的问题

包装PrismForms NavigationService的问题
EN

Stack Overflow用户
提问于 2017-03-30 14:52:21
回答 1查看 212关注 0票数 0

在PrismForms中,我们遇到了一个问题,即导航到新页面后,NavigationStack是空的。这意味着在使用SecondPage上的硬件后退按钮之后,应用程序就关闭了。尽管没有显示Android标题中的后箭头。如果仔细观察,您可以在页面切换后的短时间内看到后箭头。我想那是在NavigationStack被清除之前。

到第一个页面,我们在OnInitialized()中使用App.xaml.cs中的以下命令导航,该命令是从PrismApplication派生的。

代码语言:javascript
复制
    NavigationService.NavigateAsync("NavigationPage/StartPage");

(如果只导航到这里的“StartPage”,堆栈就不会被清除。)

这与PageNavigationService.ProcessNavigationForNavigationPage(...)有关调用bool clearNavStack = PageNavigationService.ProcessNavigationForContentPage(...)和不。

从StartPage到下一个,我们使用NavigateAsync(“SecondPage”)“导航。在这里,描述的行为出现了。

对于导航,我们使用一个包装棱镜NavigationService的类。我们将他作为一种财产持有,并在构造函数中通过Unity获得他:

代码语言:javascript
复制
    this.PrismNavigation = prismNavigation ?? throw new ArgumentNullException(nameof(prismNavigation));

我们刚刚经过的方法“NavigateAsync”和“GoBackAsync”等等。

通过这种方式,我们希望将ViewModel从对XamarinForms的引用中分离出来,以便以后能够使用相同的ViewModels,例如WPF。

为什么堆栈被我们自己的NavigationService清除了?如果我们在App.xaml.cs中注册原始的棱镜App.xaml.cs,导航返回将再次像预期的那样工作。我们在框架中找到了要点,可以避免使用枯燥的攻击,但这违背了在PrismForms中实现的导航逻辑,但我们不知道如何正确地实现它。

所有的帮助都很感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-31 13:04:27

在最后一篇文章中,我们发现了Brian的一些有趣的信息之后,我们编辑了一些东西来让它工作:

https://github.com/PrismLibrary/Prism/issues/591

尽管该主题是关于其他内容的,但它导致了覆盖导航服务的改进。

请记住,在您的viewModels中,导航服务必须按照约定命名为"navigationService“。此外,我们从仅仅将棱镜导航服务作为参数保存到上面链接中所建议的从它派生出来。

代码语言:javascript
复制
    public class MyNavigationService : UnityPageNavigationService
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43121339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档