2016-11-07 81 views
1

我正在使用Xamarin Forms,我正在使用MasterDetailPage和NavigationPage,一切正常。现在,我需要配置页面按钮(左边三个栏),以便在所有视图中都可见。如何在所有视图上显示导航页面按钮Xamarin Forms

我有一个菜单的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

页后退按钮showns自动,当我浏览到其他页面和它的罚款。

如何让三个横条页面按钮对所有视图都可见,并维护后台页面按钮?

我使用下面的代码视图之间进行导航:

await Navigation.PushAsync(MyNewPage()); 

谢谢!

回答

1

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

您可以在主MasterDetailPage中创建一叠详细页面。所以,无论何时您想推新页面,只需将页面设置为Detail并将旧Detail放在您自己的堆栈中即可。

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

+0

野趣......,我会尝试,现在! –

+0

现在我在另一个里面有两个工具栏,不想那 –

+0

你正在使用的导航? –

1

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

连接菜单列表视图:

  • ListView.ItemSelected + = OnItemSelected;

在OnItemSelected事件中。

  • {MasterDetailPage} .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;     
     } 
    } 
+0

我试图导航: await((MasterDetailPage)Application.Current.MainPage).Detail.Navigation.PushAsync(App.ClientesPage) –

+0

我试图从masterdetailpage 。上面的代码有着相同的行为。如果我尝试下面的代码它显示两个工具栏...等待((MasterDetailPage)Application.Current.MainPage).Detail.Navigation.PushAsync(新的NavigationPage(App.ClientesPage)) –

1

我认为你必须写一个自定义呈现来实现你想要什么。 但是如果你想只保留汉堡包按钮,没有后退按钮,您可以使用此代码浏览到您的网页:

Detail = new NavigationPage(new MyNewPage()); 
+0

谢谢。另一个用户告诉我,但我真的需要使用这两个按钮,而不必每次创建另一个导航页面实例。创建自定义渲染,我将需要编写2个代码,一个用于iOS,另一个用于安卓,这是很多工作,但是...我会尝试! –

相关问题