使用Xamarin表单 - 如何将按钮点击到滑动手势?

问题描述:

我有一个应用程序使用主详细信息页面和其中的导航页面。在Android上,当您通过汉堡菜单导航到帐户页面时,导航栏会按预期保持在屏幕的顶部,以便您可以使用它进行导航。在iOS上,导航栏消失,所以我创建了一个带有汉堡菜单图标的自定义栏。当有人点击自定义导航栏上的图标时,我想让汉堡菜单从左侧滑出。使用Xamarin表单 - 如何将按钮点击到滑动手势?

我已经给汉堡图标附加了一个手势识别器,但我不知道要在被调用的方法中放置什么以使其执行滑动操作。

第二页上

导航栏:

<StackLayout IsVisible="{Binding _isiPhone}" Orientation="Horizontal" BackgroundColor="#008334"> 
    <Image Source="burger.png" HorizontalOptions="StartAndExpand"> 
     <Image.GestureRecognizers> 
      <TapGestureRecognizer Tapped="Burger_Clicked"></TapGestureRecognizer> 
     </Image.GestureRecognizers> 
    </Image> 
</StackLayout> 

事件处理程序:

private void Burger_Clicked(object sender, EventArgs e) 
{ 
} 

Android设备上查看:

android view

安卓汉堡菜单视图:

android burger menu

的iOS预览(自定义导航栏):

iOS view

的iOS汉堡菜单:

iOS burger menu

您可以设置 “IsPresented” 属性MasterDetail页面上真/假使侧面菜单显示/隐藏。 请重新考虑是否真的需要自定义栏,因为标准控件应该是用户习惯的东西。

另请注意,建议您为主页面使用内容页面,并且您可以根据需要使用NavigationPage/TabPage/ContentPage作为详细信息页面。

参考official docs了解更多信息

+0

对不起,内页是一个内容页没有导航页面。 我不知道如何从帐户页面访问IsPresented属性? – NinjaFocks

+0

您可以将Application.Current.MainPage强制转换为MasterDetailPage。所以像((MasterDetailPage)Application.Current.MainPage).IsPresented = true;应显示滑出抽屉。 当然,如果您的MasterDetailPage始终位于您的应用程序的根目录下,那么您应该只使用这种方法。您可能需要测试它,或以不同的方式存储参考,无论适合您的项目,并且是您应用程序体系结构中最干净和最简单的解决方案。 – irreal