[英]Xamarin Forms Master Detail Keep Master on the left
我試圖始終將“主頁”(菜單)保持在“我的MasterDetailPage”的左側,我不希望導航使用戶離開MasterDetailPage並使用戶按下“后退”按鈕來返回。
我正在看左側的傳統漢堡欄菜單,只需更改“詳細信息”頁面並將主菜單保持在原位即可。
我現在所擁有的:
public partial class App : Application
{
public static NavigationPage NavPage { get; private set; }
private static RootPage RootPage;
public static bool MenuIsPresented
{
get
{
return RootPage.IsPresented;
}
set
{
RootPage.IsPresented = value;
}
}
public App()
{
InitializeComponent();
MenuPage menuPage = new MenuPage();
NavPage = new NavigationPage(new FirstPage());
RootPage = new RootPage();
RootPage.Master = menuPage;
RootPage.Detail = NavPage;
MainPage = RootPage;
}
...
}
還有我的ViewModel命令
async void GoSecondPageAsync(object obj)
{
await App.NavPage.PushAsync(new SecondPage());
App.MenuIsPresented = false;
}
但這只是在堆棧頂部創建一個新頁面,並帶有一個返回到MasterDetailPage的后退按鈕,而我想要的只是停留在MasterDetailPage中。
您可以推送新頁面,而只需從NavigationStack
刪除第一個頁面,例如:
async void GoSecondPageAsync(object obj)
{
await App.NavPage.PushAsync(new SecondPage());
var removePage = App.NavPage.Navigation.NavigationStack[0];
App.NavPage.Navigation.RemovePage(removePage);
App.MenuIsPresented = false;
}
雖然,如果您只是想一直替換頁面,您實際上甚至需要NavigationPage,而不能僅設置RootPage.Detail=new SecondPage();
您只需要更新Detail屬性以指向新頁面即可。 像這樣:
async void GoSecondPageAsync(object obj)
{
RootPage.Detail = new NavigationPage(new SecondPage());
App.MenuIsPresented = false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.