0

幻影第三个粉色边框(下一个)

我正在使用 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;


}
4

0 回答 0