我使用Xamarin Forms和freshmvvm。我有一个登录页面,登录后我推送下一页,比如说Page1,我想从现在开始成为root。因此,在导航到其他几个页面后,我希望能够回到Page1,调用CoreMethods.PopToRoot。注销时,我想返回登录页面并清除所有导航堆栈。这是我到目前为止尝试过的:
public class NavigationStacks
{
public static string LoginNavigationStack = "LoginNavigationStack";
public static string MainAppStack = "MainAppStack";
}
public App()
{
var page = FreshPageModelResolver.ResolvePageModel<LoginPageModel>();
var basicNavContainer = new FreshNavigationContainer(page, NavigationStacks.LoginNavigationStack);
var page2 = FreshPageModelResolver.ResolvePageModel<CustomerSearchPageModel>();
var appNavContainer = new FreshNavigationContainer(page2, NavigationStacks.MainAppStack);
MainPage = basicNavContainer;
}
登录后,我致电:
CoreMethods.SwitchOutRootNavigation(NavigationStacks.MainAppStack);
await CoreMethods.PushPageModel<CustomerSearchPageModel>();
它有效。我回到了第 1 页,无法返回登录页面。
注销时,我打电话:
CoreMethods.SwitchOutRootNavigation(NavigationStacks.LoginNavigationStack);
但什么也没发生。我想在清除导航堆栈的情况下导航回登录页面。我相信我错过了一些东西。谁能帮忙?提前感谢!!
克日什托夫
你有没有试过没有await CoreMethods.PushPageModel<CustomerSearchPageModel>();
您不需要推送在NavigationStacks.MainAppStack
上初始化的同一页面模型。
我没有看到你做错了什么。我也有类似的情况,我的CoreMethods.SwitchOutRootNavigation(NavigationStacks.LoginNavigationStack);
工作得很好。
除了我第一次注销后 UI 元素消失了(但我跑题了;我需要启动自己的线程 LOL(。