【问题标题】:Using Xamarin Forms - how can I hook up a button click to a swipe gesture?使用 Xamarin 表单 - 如何将按钮单击连接到滑动手势?
【发布时间】:2016-11-22 11:56:34
【问题描述】:

我有一个应用程序使用主详细信息页面和其中的导航页面。在 Android 上,当您通过汉堡菜单导航到帐户页面时,导航栏按预期停留在屏幕顶部,因此您可以使用它进行导航。在 iOS 上,导航栏消失了,所以我创建了一个带有汉堡菜单图标的自定义栏。当有人单击自定义导航栏上的图标时,我希望汉堡菜单从左侧滑出。

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

第二页导航栏:

<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 burger 菜单视图:

iOS 视图(带有自定义导航栏):

iOS 汉堡菜单:

【问题讨论】:

    标签: android ios xamarin.forms swipe-gesture hamburger-menu


    【解决方案1】:

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

    另外请注意,Master 页面建议使用内容页面,详细页面可以根据需要使用 NavigationPage/TabPage/ContentPage。

    更多信息请参考official docs

    【讨论】:

    • 对不起,内页是内容页,不是导航页。我不知道如何从帐户页面访问 IsPresented 属性?
    • 您可以将 Application.Current.MainPage 转换为 MasterDetailPage。所以像 ((MasterDetailPage)Application.Current.MainPage).IsPresented = true;应该显示滑出式抽屉。当然,只有在触发此代码时您的 MasterDetailPage 始终位于应用程序的根目录中时,您才应使用此方法。您可能需要对此进行测试或以不同的方式存储参考,以适合您的项目并且是您的应用架构中最简洁、最简单的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多