【发布时间】:2019-11-10 05:30:13
【问题描述】:
我正在使用 Xamarin Forms Shell,我希望能够根据某些参数(例如当前页面)隐藏 Flyout 的某些项目,但我找不到任何方法或属性来更改 FlyoutItem 的可见性.
是否可以通过编程方式隐藏一些 FlyoutItem(不是完整的 Flyout,只是一些项目)?
【问题讨论】:
标签: xamarin.forms
我正在使用 Xamarin Forms Shell,我希望能够根据某些参数(例如当前页面)隐藏 Flyout 的某些项目,但我找不到任何方法或属性来更改 FlyoutItem 的可见性.
是否可以通过编程方式隐藏一些 FlyoutItem(不是完整的 Flyout,只是一些项目)?
【问题讨论】:
标签: xamarin.forms
目前还不可能,有一个current Issue regarding this.
但是,我设法找到了另一个线程,其中可能存在动态创建弹出项的解决方案。你可以查看here.
【讨论】:
可以使用 Xamarin.Forms 4.8 版本。 您可以使用 Isvisible 属性来显示/隐藏任何弹出项。 详情请参考以下链接:
【讨论】:
遇到同样的问题,这是我的解决方案。 我创建了一个样式,并将其设置为隐藏。 然后我根据需要在后端更新我的 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");
}
【讨论】:
这对我有用 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
【讨论】:
我正在搜索如何在 Shell Flyout 中隐藏 MenuItem,因为我不想使用 FlyoutItem。我需要 Clicked 事件。我设法隐藏了一个 MenuItem:
<MenuItem Text="Arrivals" x:Name="Arrivals" Clicked="MenuItem_Clicked" Shell.FlyoutItemIsVisible="False"/>
【讨论】: