首页 > 解决方案 > Xamarin Forms - 使用 ViewModels 保存和检索 Prism 导航堆栈

问题描述

我正在使用 Prism for Navigation 实现 Xamarin Forms Mobile 应用程序。

有没有办法从 Prism 中检索完整的导航堆栈以及视图模型?

要求是,如果用户处于工作流程的中间并且应用程序已关闭,则用户应该能够在启动新会话时继续工作流程。

所以我试图定期将整个导航堆栈保存到数据库中。

标签: c#xamarin.formsprism

解决方案


Prism没有单独维护的 NavigationStack。相反,它使用内置的 Xamarin.Forms 导航堆栈。如果您需要查看实际的导航堆栈,则可以从页面的代码隐藏中进行。如果只需要获取当前页面的当前uri路径,可以使用GetNavigationUriPath.

public static string GetNavigationUriPath(this INavigationService navigationService)
   {
        var currentpage = ((IPageAware)navigationService).Page;

        Stack<string> stack = new Stack<string>();
        currentpage = ProcessCurrentPageNavigationPath(currentpage, stack);
        ProcessNavigationPath(currentpage, stack);

        StringBuilder sb = new StringBuilder();
        while (stack.Count > 0)
        {
            sb.Append($"/{stack.Pop()}");
        }
        return sb.ToString();
    }

https://github.com/PrismLibrary/Prism/blob/master/Source/Xamarin/Prism.Forms/Navigation/INavigationServiceExtensions.cs


推荐阅读