Xaml Forms Shell如何删除hamburger菜单中的FlyoutItem元素的空格

Xaml Forms Shell如何删除hamburger菜单中的FlyoutItem元素的空格,xaml,xamarin.forms,xamarin.forms.shell,Xaml,Xamarin.forms,Xamarin.forms.shell,我使用的是Shell,我有一个设计,其中我有一个带有AsingleItem中的FlyoutDisplayOptions属性的FlyoutItem,我还有几个MenuItem,此设计有一个带有选项卡的页面和一个显示菜单项的汉堡菜单,但问题是,如果我放置整个弹出项的标题和图标,它是空的,但如果我将其留空,空间不会消失并且是空的,这是一个浪费的空间,我的问题是如何删除该空间 这是我的代码: <FlyoutItem Route="home" x:Name="flyoutItem"

我使用的是Shell,我有一个设计,其中我有一个带有AsingleItem中的FlyoutDisplayOptions属性的FlyoutItem,我还有几个MenuItem,此设计有一个带有选项卡的页面和一个显示菜单项的汉堡菜单,但问题是,如果我放置整个弹出项的标题和图标,它是空的,但如果我将其留空,空间不会消失并且是空的,这是一个浪费的空间,我的问题是如何删除该空间

这是我的代码:

    <FlyoutItem Route="home" x:Name="flyoutItem"
        FlyoutDisplayOptions="AsSingleItem">
    <ShellContent Route="bottomtab1"
                  Style="{StaticResource TabBackground}"
                  Icon="home_icon"
                  ContentTemplate="{DataTemplate views:x}" />
    <ShellContent Route="bottomtab2"
                  Style="{StaticResource TabBackground}"
                  Icon="home_icon"
                  ContentTemplate="{DataTemplate DataTemplate views:x}" />
    <ShellContent Route="bottomtab3"
                  Style="{StaticResource TabBackground}"
                  Icon="home_icon"
                  ContentTemplate="{DataTemplate DataTemplate views:x}" />
    <ShellContent Route="bottomtab4"
                  Style="{StaticResource TabBackground}"
                  Icon="home_icon"
                  ContentTemplate="{DataTemplate DataTemplate views:x}" />
    <ShellContent Route="bottomtab5"
                  Style="{StaticResource TabBackground}"
                  Icon="home_icon"
                  ContentTemplate="{DataTemplate DataTemplate views:x}" />
</FlyoutItem>

<MenuItem Text="Test 1"
          IconImageSource="home_icon" />

<MenuItem Text="Test 2"
          IconImageSource="home_icon" />

<MenuItem Text="Test 3"
          IconImageSource="home_icon"/>

<MenuItem Text="Test 4"
          IconImageSource="home_icon"/>

<MenuItem Text="Test 5"
          IconImageSource="home_icon"/>

<MenuItem Text="Test 6"
          IconImageSource="home_icon"/>

我在这些图片中留下了设计


如果要删除弹出按钮中的项目,但该项目仍显示在主页面中。如下图所示。

首先,删除
弹出项的内容。然后对所有的
shell内容使用
TabBar
,就像下面的代码一样

  <TabBar>
    <Tab Title="Browse" Icon="tab_feed.png">
        <ShellContent ContentTemplate="{DataTemplate local:ItemsPage}" />
    </Tab>
    <Tab Title="About" Icon="tab_about.png">
        <ShellContent ContentTemplate="{DataTemplate local:AboutPage}" />
    </Tab>
  </TabBar>

但是如果您将其隐藏,当您单击任意菜单项时,您将不会返回主页(显示aminials信息)。(例如,我的主页将显示aminials信息,当我单击关于
菜单项时,我无法像下面的GIF那样访问我的aminials页面)

因此,我建议您为您的
弹出式菜单项提供标题和图标,当您单击其他菜单项时,您可以返回到上一个主页。下面是运行GIF。

我有一个类似的场景-我有几个页面只能根据启动逻辑查看,我需要shell以正确的顺序加载它们,但在弹出按钮中也不可见。我能够做到这一点,只需添加一些页面,这些页面应该以分层顺序从弹出按钮隐藏,如带有
IsEnabled=“True”
和is
IsVisible=“False”
属性的
FlyoutItem
s。从

IsEnabled类型为boolean,定义该项在chrome中是否可选择

类型为bool的IsVisible表示弹出项是否隐藏在 弹出式菜单。其默认值为true

  • 当我只将
    IsVisible
    设置为false时,我非常确定我仍然能够单击弹出项,即使它不在那里。因此,我还将
    IsEnabled
    设置为false。可能只有
    IsVisible=False
    是必需的
当应用程序运行
MainPage=new AppShell()
时,它将首先加载
CheckConnection
页面(现在从弹出按钮中隐藏),该页面具有导航到正确页面的逻辑(请记住,正如@Leon Lu-MSFT在其回答中所说,以确保您仍然可以正确地导航到“隐藏”页面


结果是,只有配置页面可在弹出按钮中点击,并且没有间距,并且没有用户可以意外单击以导致shell导航的不可见位置(如果您有一个可单击的“空间”是一个不可见的shell弹出按钮项,则情况就是如此)


您应该能够从
中删除空白。我可以删除弹出项目的图标和图标空间吗?谢谢,这真的帮助了我。我将初始化/加载页面设置为“IsVisible=False”。它最初显示(正确),但不显示在菜单中。伟大的
<FlyoutItem 
        IsEnabled="True"
        IsVisible="False"
        Title="CheckConnectionPage"
        >
    <ShellContent Route="CheckConnectionPage" ContentTemplate="{DataTemplate local:CheckConnectionPage}"  />
    
</FlyoutItem>
<FlyoutItem 
        IsEnabled="True"
        IsVisible="False"
        Title="StatPage"
        >
    <ShellContent Route="StatPage" ContentTemplate="{DataTemplate local:StatPage}"  />
</FlyoutItem>

<FlyoutItem Title="Configuration" Icon="settings_icon_black.png">
    <ShellContent Route="ConfigurePage"  ContentTemplate="{DataTemplate local:ConfigurePage}" />
</FlyoutItem>