簡體   English   中英

Xamarin形成母版詳細信息將母版保留在左側

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM