1

我使用 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);

但什么也没有发生。我想在清除导航堆栈的情况下导航回登录页面。我相信我想念一些东西。任何人都可以帮忙吗?提前致谢!!

克日什托夫

4

1 回答 1

0

你试过没有
await CoreMethods.PushPageModel<CustomerSearchPageModel>();

您不需要推送在NavigationStacks.MainAppStack.

我看你没有做错什么。我有类似的情况,我的CoreMethods.SwitchOutRootNavigation(NavigationStacks.LoginNavigationStack);作品很好。

除了我第一次注销后 UI 元素消失(但我离题了;我需要启动自己的线程 LOL)。

于 2020-07-30T13:07:22.810 回答