因此LoginPage,我的 xamarin 表單中有一個,用戶可以通過打開漢堡菜單及其HomeMenuItems在我的ListView. 當(dāng)用戶登錄時,我導(dǎo)航回主頁并LoginPage從導(dǎo)航堆棧中刪除:var nextPage = new HomePage();await this.Navigation.PushAsync(nextPage);Navigation.RemovePage(this);并更改漢堡導(dǎo)航以添加新的 HomeMenuItems,例如 MyPage 和 Logout,例如:var md = (MasterDetailPage)Application.Current.MainPage;var menu = (MenuPage)md.Master;menu.showmychildren();它可以工作,但是當(dāng)我注銷時,每當(dāng)我嘗試導(dǎo)航到時,我都會將漢堡菜單更改回“注銷版本”,LoginPage它會將我導(dǎo)航到 HomePage并且我不知道它為什么這樣做。從漢堡菜單導(dǎo)航到 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條經(jīng)驗 獲得超1個贊
根據(jù)你的描述,我給你一些建議:
1.removeInitializeComponent();
無需再次調(diào)用該方法。
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 項作為數(shù)組中的第一個元素。重置ListViewMenu.ItemsSource
后MasterPage
,它將顯示 menuItems 中的第一頁。
3.通過問題和您的評論,我很困惑您的注銷按鈕在哪里?在主菜單中?在登錄頁面?
4.您在方法中導(dǎo)航頁面,ListViewMenu.ItemSelected
我認為導(dǎo)航到哪個頁面取決于id,因此您可以在該行 添加一個斷點await RootPage.NavigateFromMenu(id);
,然后檢查 SelectedItem 的 id 是否是MenuItemType.Login
導(dǎo)航頁面時的類型。
- 1 回答
- 0 關(guān)注
- 170 瀏覽
添加回答
舉報
0/150
提交
取消