猿问

注销后导航到登录的 Xamarin 表单不起作用

因此LoginPage,我的 xamarin 表单中有一个,用户可以通过打开汉堡菜单及其HomeMenuItems在我的ListView. 当用户登录时,我导航回主页并LoginPage从导航堆栈中删除:


var nextPage = new HomePage();

await this.Navigation.PushAsync(nextPage);

Navigation.RemovePage(this);

并更改汉堡导航以添加新的 HomeMenuItems,例如 MyPage 和 Logout,例如:


var md = (MasterDetailPage)Application.Current.MainPage;

var menu = (MenuPage)md.Master;

menu.showmychildren();

它可以工作,但是当我注销时,每当我尝试导航到时,我都会将汉堡菜单更改回“注销版本”,LoginPage它会将我导航到 HomePage并且我不知道它为什么这样做。


从汉堡菜单导航到 LoginPage:


public void hideall()

{

    InitializeComponent();


    ucet_stack.IsVisible = false;

    ucet.IsVisible = false;

    photo_sack.IsVisible = false;

    photo.IsVisible = false;


    menuItems = new List<HomeMenuItem>

    {

        new HomeMenuItem {Id = MenuItemType.Home, Title="> HomePage" },

        new HomeMenuItem {Id = MenuItemType.Login, Title="> Login" },

         new HomeMenuItem {Id = MenuItemType.Sponsors, Title="> Sponsors" }

    };


    ListViewMenu.ItemsSource = menuItems;


    ListViewMenu.SelectedItem = menuItems[0];


    ListViewMenu.ItemSelected += async (sender, e) =>

    {

        if (e.SelectedItem == null)

            return;


        var id = (int)((HomeMenuItem)e.SelectedItem).Id;

        await RootPage.NavigateFromMenu(id);

    };

}

我打电话给:


var md = (MasterDetailPage)Application.Current.MainPage;

var menu = (MenuPage)md.Master;

menu.hideall();

注销后。


素胚勾勒不出你
浏览 135回答 1
1回答

小怪兽爱吃肉

根据你的描述,我给你一些建议:1.removeInitializeComponent();无需再次调用该方法。2.如果你想Navigating to LoginPage from hamburger menu在方法中hideall(),你可以尝试改变项目的顺序menuItems:menuItems&nbsp;=&nbsp;new&nbsp;List<HomeMenuItem> &nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;HomeMenuItem&nbsp;{Id&nbsp;=&nbsp;MenuItemType.Login,&nbsp;Title=">&nbsp;Login"&nbsp;},&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;HomeMenuItem&nbsp;{Id&nbsp;=&nbsp;MenuItemType.Home,&nbsp;Title=">&nbsp;HomePage"&nbsp;},&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;HomeMenuItem&nbsp;{Id&nbsp;=&nbsp;MenuItemType.Sponsors,&nbsp;Title=">&nbsp;Sponsors"&nbsp;} &nbsp;};将 Login 项作为数组中的第一个元素。重置ListViewMenu.ItemsSource后MasterPage,它将显示 menuItems 中的第一页。3.通过问题和您的评论,我很困惑您的注销按钮在哪里?在主菜单中?在登录页面?4.您在方法中导航页面,ListViewMenu.ItemSelected我认为导航到哪个页面取决于id,因此您可以在该行 添加一个断点await RootPage.NavigateFromMenu(id);,然后检查 SelectedItem 的 id 是否是MenuItemType.Login导航页面时的类型。
随时随地看视频慕课网APP
我要回答