我正在使用Prism进行导航来实现Xamarin Forms Mobile应用程序。
是否可以从Prism检索完整的导航堆栈以及视图模型?
要求是,如果用户处于工作流程的中间并且应用已关闭,则用户应该能够在启动新会话时继续工作流程。
所以我试图定期将整个导航堆栈保存到数据库中。
答案 0 :(得分:0)
棱镜没有单独维护的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();
}
答案 1 :(得分:0)
您现在可以通过调用INavigationService.GetNavigationUriPath来获取页面的绝对导航路径。