因此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();注销后。
1 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
根据你的描述,我给你一些建议:
1.removeInitializeComponent();
无需再次调用该方法。
2.如果你想Navigating to LoginPage from hamburger menu
在方法中hideall()
,你可以尝试改变项目的顺序menuItems
:
menuItems = new List<HomeMenuItem> { new HomeMenuItem {Id = MenuItemType.Login, Title="> Login" }, new HomeMenuItem {Id = MenuItemType.Home, Title="> HomePage" }, new HomeMenuItem {Id = MenuItemType.Sponsors, Title="> Sponsors" } };
将 Login 项作为数组中的第一个元素。重置ListViewMenu.ItemsSource
后MasterPage
,它将显示 menuItems 中的第一页。
3.通过问题和您的评论,我很困惑您的注销按钮在哪里?在主菜单中?在登录页面?
4.您在方法中导航页面,ListViewMenu.ItemSelected
我认为导航到哪个页面取决于id,因此您可以在该行 添加一个断点await RootPage.NavigateFromMenu(id);
,然后检查 SelectedItem 的 id 是否是MenuItemType.Login
导航页面时的类型。
- 1 回答
- 0 关注
- 134 浏览
添加回答
举报
0/150
提交
取消