首页 文章

如何在所有视图Xamarin Forms上显示导航页面按钮

提问于
浏览
1

我正在使用Xamarin Forms,我正在使用MasterDetailPage和NavigationPage,一切正常 . 现在,我需要配置页面按钮(左侧的三个条)以在所有视图上可见 .

我有一个带有菜单的MasterDetailPage,用户点击菜单导航到其他页面 . 第一页(主页)看起来像那样:

<MasterDetailPage.Detail>
    <NavigationPage>
        <x:Arguments>
            <home:HomePage />
        </x:Arguments>
    </NavigationPage>
</MasterDetailPage.Detail>

enter image description here

当用户点击masterdetailpage内的菜单或masterdetailpage外的其他菜单时,它会执行导航:

enter image description here

三个小节页面按钮仅在第一个视图中可见,当我导航到其他视图时,该按钮消失 .

但是,我想要这样的东西:

enter image description here

当我导航到其他页面时,页面后退按钮会自动显示,并且没问题 .

如何让三个栏页面按钮对所有视图可见并保持后页按钮?

我使用以下代码在视图之间导航:

await Navigation.PushAsync(MyNewPage());

谢谢!

3 回答

  • 1

    您的主详细信息页面必须处理导航到详细信息页面才能正常工作 .

    连接菜单列表视图:

    • ListView.ItemSelected = OnItemSelected;

    在OnItemSelected事件中 .

    • .Detail.Navigation.PushAsync(new MyNewPage());

    以下是主细节导航的示例:

    async void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
        {
            var item = e.SelectedItem as MasterPageItem;
    
            if (item != null)
            {                
                NavigationPage nextDetailPage = null;
                await Task.Run(() =>
                {                    
                    nextDetailPage = new NavigationPage((Page)Activator.CreateInstance(item.TargetType));                   
                });
                Detail = nextDetailPage;
                masterPage.ListView.SelectedItem = null;
                IsPresented = false;                
            }
        }
    
  • 1

    这是不可能的,因为左侧不能有两个按钮 . 和我见过的许多应用程序一样,没有应用程序支持这种UI . 除非您编写自定义导航栏并将其放在每个页面的顶部 .

    您可以在主MasterDetailPage中创建一堆详细信息页面 . 因此,无论何时您想要推送新页面,您都可以将页面设置为详细信息并将旧详细信息放入您自己的堆栈中 .

    对于Android,您可以将按钮事件从堆栈中回滚到弹出页面,但在iOS上没有后退按钮,因此您必须在详细信息页面的工具栏中创建某种后退按钮 .

  • 1

    我认为你必须编写一个自定义渲染器来实现你想要的 . 但是,如果您只想保留汉堡包按钮而不使用后退按钮,则可以使用以下代码导航到您的页面:

    Detail = new NavigationPage(new MyNewPage());
    

相关问题