Xamarin.forms 主页面详细信息页未显示在内容页之后

Xamarin.forms 主页面详细信息页未显示在内容页之后,xamarin.forms,master-detail,Xamarin.forms,Master Detail,我在xamarin工作。我正在创建一个android应用程序。在我的应用程序中,我必须使用菜单。所以我用母版细节页来显示菜单。它工作得很好 但我的问题是,在显示母版详细信息页面之前,我必须打开一个不包含菜单的内容页面。所以我拿了一个内容页并设置了它。但当我在内容页之后运行应用程序时,母版详细信息页不会出现。代码正在成功运行,但母版页未显示 有谁能告诉我在显示简单内容页之后如何显示母版详细信息页吗?给你一个窍门!假设您有一个登录页面,经过身份验证后,您将转到根页面,这是一个masterDetail

我在xamarin工作。我正在创建一个android应用程序。在我的应用程序中,我必须使用菜单。所以我用母版细节页来显示菜单。它工作得很好

但我的问题是,在显示母版详细信息页面之前,我必须打开一个不包含菜单的内容页面。所以我拿了一个内容页并设置了它。但当我在内容页之后运行应用程序时,母版详细信息页不会出现。代码正在成功运行,但母版页未显示


有谁能告诉我在显示简单内容页之后如何显示母版详细信息页吗?

给你一个窍门!假设您有一个登录页面,经过身份验证后,您将转到根页面,这是一个masterDetailPage

从下面的代码中得到提示

根页面:

namespace LoginNavigation
{
    public class RootPage:MasterDetailPage
    {
        MenuPage menuPage;


        public RootPage () {
            ToolbarItems.Add(new ToolbarItem("Filter", "ring.png", async () => {
                var page = new ContentPage();
                var result = await page.DisplayAlert("Title", "Message", "Accept", "Cancel");
                Debug.WriteLine("success: {0}", result);
            }));

            menuPage = new MenuPage ();

            menuPage.Menu.ItemSelected += (sender, e) => NavigateTo (e.SelectedItem as MenuItemForMaster);

            //Master = new MasterMenu();
            Master = menuPage;
            Detail = new NavigationPage (new TimeSheet()){
                BarBackgroundColor = Color.FromHex("008dce"),BackgroundColor  = Color.FromHex("008dce")
            };
        }

        void NavigateTo (MenuItemForMaster menu) {
            if (menu == null)
                return;

            Page displayPage = (Page)Activator.CreateInstance (menu.TargetType);
            //Detail = displayPage;
            Detail = new NavigationPage (displayPage) { BarBackgroundColor = Color.FromHex("008dce"),BackgroundColor  = Color.FromHex("008dce")};

            menuPage.Menu.SelectedItem = null;
            IsPresented = false;
        }
    }
}

所以诀窍是,获取App类的当前实例并操作它的Mainpage属性。

给你一个诀窍!假设您有一个登录页面,经过身份验证后,您将转到根页面,这是一个masterDetailPage

从下面的代码中得到提示

根页面:

namespace LoginNavigation
{
    public class RootPage:MasterDetailPage
    {
        MenuPage menuPage;


        public RootPage () {
            ToolbarItems.Add(new ToolbarItem("Filter", "ring.png", async () => {
                var page = new ContentPage();
                var result = await page.DisplayAlert("Title", "Message", "Accept", "Cancel");
                Debug.WriteLine("success: {0}", result);
            }));

            menuPage = new MenuPage ();

            menuPage.Menu.ItemSelected += (sender, e) => NavigateTo (e.SelectedItem as MenuItemForMaster);

            //Master = new MasterMenu();
            Master = menuPage;
            Detail = new NavigationPage (new TimeSheet()){
                BarBackgroundColor = Color.FromHex("008dce"),BackgroundColor  = Color.FromHex("008dce")
            };
        }

        void NavigateTo (MenuItemForMaster menu) {
            if (menu == null)
                return;

            Page displayPage = (Page)Activator.CreateInstance (menu.TargetType);
            //Detail = displayPage;
            Detail = new NavigationPage (displayPage) { BarBackgroundColor = Color.FromHex("008dce"),BackgroundColor  = Color.FromHex("008dce")};

            menuPage.Menu.SelectedItem = null;
            IsPresented = false;
        }
    }
}

所以诀窍是,获取App类的当前实例并操作它的Mainpage属性。

答案将取决于是否要维护导航堆栈。如果要将新页面添加到当前导航堆栈,则需要在内容页面中执行以下操作:

((NavigationPage)Parent).PushAsync(newPage);
如果要使新页面成为导航堆栈的根,则需要执行以下操作:

((App) Parent).MainPage = newPage;

如果这不起作用,请发布您的代码。

答案将取决于您是否要维护导航堆栈。如果要将新页面添加到当前导航堆栈,则需要在内容页面中执行以下操作:

((NavigationPage)Parent).PushAsync(newPage);
如果要使新页面成为导航堆栈的根,则需要执行以下操作:

((App) Parent).MainPage = newPage;

如果这不起作用,请发布您的代码。

我尝试过,但仍然不起作用。请您更新我应该在App.cs中编写的特定代码,以便我可以在内容页之后在母版详细信息页上移动。我尝试了,但仍然无法工作。请您更新我应该在App.cs中编写的特定代码,以便我可以在内容页之后在母版详细信息页上移动。谢谢Christine,它现在可以工作了。我使用了App.Current.MainPage=newPage;谢谢Christine,现在开始工作了。我使用了App.Current.MainPage=newPage;