【问题标题】:Is it possible to hide a specific FlyoutItem when using Xamarin Forms Shell?使用 Xamarin Forms Shell 时是否可以隐藏特定的 FlyoutItem?
【发布时间】:2019-11-10 05:30:13
【问题描述】:

我正在使用 Xamarin Forms Shell,我希望能够根据某些参数(例如当前页面)隐藏 Flyout 的某些项目,但我找不到任何方法或属性来更改 FlyoutItem 的可见性.

是否可以通过编程方式隐藏一些 FlyoutItem(不是完整的 Flyout,只是一些项目)?

【问题讨论】:

    标签: xamarin.forms


    【解决方案1】:

    目前还不可能,有一个current Issue regarding this.

    但是,我设法找到了另一个线程,其中可能存在动态创建弹出项的解决方案。你可以查看here.

    【讨论】:

      【解决方案2】:

      可以使用 Xamarin.Forms 4.8 版本。 您可以使用 Isvisible 属性来显示/隐藏任何弹出项。 详情请参考以下链接:

      Xamarin.Forms v4.8

      GitHub Issue Resolved

      【讨论】:

        【解决方案3】:

        遇到同样的问题,这是我的解决方案。 我创建了一个样式,并将其设置为隐藏。 然后我根据需要在后端更新我的 MenuItem。

        风格

        <Style
                    ApplyToDerivedTypes="True"
                    Class="MenuItemLayoutStyleHidden"
                    TargetType="Layout">
                    <Setter Property="IsVisible" Value="False" />
                </Style>
        

        菜单项

        <MenuItem
            x:Name="btnLogout"
            Clicked="btnLogoutClick"
            IconImageSource="icon_about.png"
            StyleClass="MenuItemLayoutStyle"
            Text="Logout" />
        

        后端代码

        if (user.isLoggedIn)
                {
                    btnLogout.@class.Clear();
                    btnLogout.@class.Add("MenuItemLayoutStyle");
                }
                else
                {
                    btnLogout.@class.Clear();
                    btnLogout.@class.Add("MenuItemLayoutStyleHidden");
                }
        

        【讨论】:

          【解决方案4】:

          这对我有用 flyoutxname.FlyoutItemIsVisible = false;

          其中 flyoutxname 是 flyoutitem 的 x:Name 属性。

          <FlyoutItem Title="item title" x:Name="flyoutxname" Icon="byebye.jpg">
          

          来源 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/shell/flyout

          【讨论】:

          • 嘿,第二行好像被截断了?我认为您的意思是“flyoutxname 是您的弹出窗口的名称”?
          • 是的,快点。 flyoutxname 是 flyoutitem 的 x:Name 属性
          【解决方案5】:

          我正在搜索如何在 Shell Flyout 中隐藏 MenuItem,因为我不想使用 FlyoutItem。我需要 Clicked 事件。我设法隐藏了一个 MenuItem

          <MenuItem Text="Arrivals" x:Name="Arrivals" Clicked="MenuItem_Clicked" Shell.FlyoutItemIsVisible="False"/>
          

          【讨论】:

            猜你喜欢
            • 2019-11-25
            • 2020-07-22
            • 2019-11-06
            • 1970-01-01
            • 1970-01-01
            • 2011-01-18
            • 1970-01-01
            • 1970-01-01
            • 2021-03-08
            相关资源
            最近更新 更多