Xamarin 在一页中显示多个弹出按钮 可用属性来自代码来自 xaml注意

问题描述

我一直在研究 Xamarin.Forms Shell。认情况下,Shell 中可用的弹出按钮允许从屏幕左侧滑动或点击工具栏菜单按钮使弹出按钮出现在屏幕左侧。

我还看到了一种变体,其中工具栏和弹出按钮被翻转,因此工具栏按钮和弹出按钮位于屏幕右侧。

我的问题是 - 我想在屏幕上显示多个浮出控件。 Shell 可以工作,但是如果我使用 Shell(左侧或右侧,但不能同时使用两者),我似乎只能有一个弹出按钮。有没有办法在 Shell 中使用多个弹出按钮?

或者,是否有使用其他方法更好的解决方案?

解决方法

您可以使用 Xamarin.CommunityToolkit package 中的 SideMenuViewPage,它已经可用但尚未记录。

您可以在 SideMenuViewPage.xaml

中找到以下代码的完整示例

示例

<xct:SideMenuView x:Name="SideMenuView">
        <!-- MainView -->
        <StackLayout BackgroundColor="Gold">
              <Label Text="This is the Main view" VerticalOptions="Center" HorizontalOptions="Center"/>
        </StackLayout>

        <!-- LeftMenu -->
        <StackLayout
            xct:SideMenuView.Position="LeftMenu"
            xct:SideMenuView.MenuWidthPercentage=".5"
            xct:SideMenuView.MainViewScaleFactor=".95"
            BackgroundColor="Orange">

              <Label Text="This is the left menu view"/>
        </StackLayout>

        <!-- RightMenu -->
        <StackLayout
            xct:SideMenuView.Position="RightMenu"
            xct:SideMenuView.MenuWidthPercentage=".3"
            xct:SideMenuView.MenuGestureEnabled="False"
            BackgroundColor="LightGreen">

              <Label Text="This is the Right menu view"/>
        </StackLayout>

</xct:SideMenuView>

可用属性

财产 说明
MenuWidthPercentage 设置菜单相对于它的父级的宽度百分比。
MainViewScaleFactor 设置打开侧边菜单(左侧或右侧)时 MainView 将缩放到的缩放百分比。
Position 指定位置是right还是left还是main,如果不指定则认为是MainView。
MenuGestureEnabled 启用/禁用侧滑手势选项以打开/关闭菜单/视图。

打开/关闭侧边菜单视图(弹出)

来自代码

通过滑动手势或设置您在 xaml 中定义的 State 的属性 SideMenuView 来打开左右菜单/视图:

SideMenuView.State = SideMenuState.MainViewShown;    //show main view and close both left and right menu view
SideMenuView.State = SideMenuState.RightMenuShown;   //Open right menu view
SideMenuView.State = SideMenuState.LeftMenuShown;    //Open left menu view

来自 xaml

默认情况下左右菜单是关闭的(State 属性的默认值为 MainViewShown),如果您希望最初打开菜单,请在您的 xaml 中更改它的值:

<xct:SideMenuView x:Name="SideMenuView" State="LeftMenuShown">

混合方法是将 State 绑定到一个属性并根据您的逻辑在代码中更改它。

注意

目前仅支持 iOS 和 Android(不支持 uwp)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...