Как отключить корневую навигацию

Я использую 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);

Но ничего не происходит. Я бы хотел вернуться на страницу входа с очищенным стеком навигации. Кажется, я что-то упускаю. Кто-нибудь может помочь? Заранее спасибо!!

Кшиштоф


person Krzysztof Kaźmierczak    schedule 24.06.2020    source источник


Ответы (1)


Вы пробовали это без
await CoreMethods.PushPageModel<CustomerSearchPageModel>();

Вам не нужно продвигать ту же модель страницы, которая инициализирована на вашем NavigationStacks.MainAppStack.

Я не вижу, что ты делаешь что-то не так. У меня похожая ситуация, и мой CoreMethods.SwitchOutRootNavigation(NavigationStacks.LoginNavigationStack); работает нормально.

За исключением того, что у меня элементы пользовательского интерфейса исчезают после первого выхода из системы (но я отвлекся; мне нужно запустить свой собственный поток LOL).

person user14022151    schedule 30.07.2020