xamarin.forms - 幻影 ShellGroupItem 被添加到 MainPage.InternalChildren 列表
问题描述
我正在使用 Xamarin.Forms Shell 布局,以及使用名为 CustomFlyoutItem 的自定义子类 FlyoutItem 的 Flyout 菜单,其显示由数据项模板控制。该模板使用 Grid 并包含两行。第二行只是一个粉红色的底部边框(BoxView 高度 1),只有在我的 customFlyoutItem 的 bool 属性 HasBottomDivider 设置为 true 时才应显示。(使用 IsVisible 绑定来实现这一点)。
有两个问题:1)弹出项中的最后一项应该是我屏幕截图中的“帮助”项。但是,该列表似乎包含一个没有图标或文本的额外幻像 CustomFlyoutItem。在调试时,我看到这是一个“ShellGroupItem”类型的项目 2)该项目在它下面也有一个粉红色的边框,这确实是主要问题。
我有一个解决方法,可以在显示页面之前使用 linq 删除该项目,但我想知道为什么它首先存在的根本原因。
<Shell.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.05*"></ColumnDefinition>
<ColumnDefinition Width="0.1*"></ColumnDefinition>
<ColumnDefinition Width="0.85*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="45" />
<RowDefinition Height="1" />
</Grid.RowDefinitions>
<Label Text="{Binding Ligature}"
Grid.Column="1"
Grid.Row="0"
TextColor="White"
FontFamily="{Binding FontFamily }"
VerticalTextAlignment="Center"
HorizontalTextAlignment="Start"
FontSize="20"
HeightRequest="45">
</Label>
<Label Grid.Column="2"
Grid.Row="0"
FontSize="16"
Margin="0"
Text="{Binding Title}"
TextColor="White"
HorizontalTextAlignment="Start"
VerticalTextAlignment="Center" />
<BoxView IsVisible="{Binding HasBottomDivider}"
BackgroundColor="{StaticResource BrilliantRose}"
Grid.Column="0" Grid.ColumnSpan="3"
Grid.Row="1" >
</BoxView>
</Grid>
</DataTemplate>
</Shell.ItemTemplate>
<Shell.FlyoutHeader>
<menu:FlyoutHeader />
</Shell.FlyoutHeader>
<menu:CustomFlyoutItem Title="Home" FontFamily="{StaticResource FontAwesomeSolid}" Ligature="{x:Static fontawesome:FontAwesomeIcons.Home}">
<Tab>
<ShellContent>
<views:LoginPage />
</ShellContent>
</Tab>
</menu:CustomFlyoutItem>
<menu:CustomFlyoutItem HasBottomDivider="true" Title="Measurements" FontFamily="{StaticResource FontAwesomeRegular}" Ligature="{x:Static fontawesome:FontAwesomeIcons.ChartBar}">
<Tab>
<ShellContent>
<views:LoginPage />
</ShellContent>
</Tab>
</menu:CustomFlyoutItem>
<menu:CustomFlyoutItem Title="Jobs" FontFamily="{StaticResource FontAwesomeSolid}" Ligature="{x:Static fontawesome:FontAwesomeIcons.User}">
<Tab>
<ShellContent>
<views:LoginPage />
</ShellContent>
</Tab>
</menu:CustomFlyoutItem>
<menu:CustomFlyoutItem HasBottomDivider="true" Title="Instruments" FontFamily="{StaticResource FontAwesomeBrands}" Ligature="{x:Static fontawesome:FontAwesomeIcons.BluetoothB}">
<Tab>
<ShellContent>
<views:LoginPage />
</ShellContent>
</Tab>
</menu:CustomFlyoutItem>
<menu:CustomFlyoutItem Title="Settings" FontFamily="{StaticResource FontAwesomeSolid}" Ligature="{x:Static fontawesome:FontAwesomeIcons.Cog}">
<Tab>
<ShellContent>
<views:LoginPage />
</ShellContent>
</Tab>
</menu:CustomFlyoutItem>
<menu:CustomFlyoutItem Title="Help" FontFamily="{StaticResource FontAwesomeSolid}" Ligature="{x:Static fontawesome:FontAwesomeIcons.QuestionCircle}">
<Tab>
<ShellContent>
<views:LoginPage />
</ShellContent>
</Tab>
</menu:CustomFlyoutItem>
public class CustomFlyoutItem : FlyoutItem
{
public string FontFamily { get; set; }
public string Ligature { get; set; } = "";
public bool HasBottomDivider { get; set; } = false;
}
解决方案
推荐阅读
- c++ - 从文件中读取两个带有空格的数字作为单个数字
- python - 如何创建根据文件名标记非结构化数据集的 csv 文件
- image - 如何在本地主机上设置正确的路径
- heroku - 无法在 Heroku 上使用 APScheduler 更新应用程序中的 GeoJSON 文件
- r - 将ggplot2 y轴修改为整数,不限制多个图的y轴
- mysql - TypeORM createQueryBuilder 无法管理 JOIN
- json - 如何解决:使用 gactions 时出现“没有“预览”的帮助主题”错误?
- css - 如何覆盖材料ui REACTjs中menuItem中选定的类?
- android - 在 FragmentPagerAdapter 上调用 instantiateItem 或 getItem
- windows - 指定域不存在或无法联系