c# - Xamarin Forms - 使用 ViewModels 保存和检索 Prism 导航堆栈
问题描述
我正在使用 Prism for Navigation 实现 Xamarin Forms Mobile 应用程序。
有没有办法从 Prism 中检索完整的导航堆栈以及视图模型?
要求是,如果用户处于工作流程的中间并且应用程序已关闭,则用户应该能够在启动新会话时继续工作流程。
所以我试图定期将整个导航堆栈保存到数据库中。
解决方案
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();
}
推荐阅读
- node.js - 如何将 MongoDB 添加到我已经取得很大进展的 React Web 应用程序中?
- docker - 如何将 docker 镜像从网站推送到远程设备并自动运行
- java - 具有恒定循环和递归的给定函数的时间复杂度
- contextmenu - 如何在制表单元格中单击时添加上下文菜单?
- json - ReactJS 嵌套属性不适用于 JSON 数据
- applescript - 为什么在 AppleScript for BBEdit 中使用替换时出现错误?
- python - 使用 BeautifulSoup 抓取 shopee.co.id 时得到一个空列表
- node.js - 使用multer在mongodb中保存多个文件
- function - 通用顶级函数参考
- excel - 确保公式单元格已更新