在 Xamarin.Forms Shell 中使用 ShellSection 时,为什么分隔符不显示在弹出窗口中?

Fra*_*rpa 2 xamarin.ios flyout xamarin.android xamarin xamarin.forms

在我的 Xamarin.Forms Shell 应用程序中,我在文件中定义弹出项目AppShell.xaml.cs,而不是在AppShell.xaml文件中定义,因为我需要以编程方式定义它们。在这里,我读到我可以使用该FlyoutDisplayOptions.AsMultipleItems值来获取分隔符。所以,我不明白为什么 Xamarin 在使用元素ShellSection并将其设置FlyoutDisplayOptions为时不显示分隔符FlyoutDisplayOptions.AsMultipleItems。我定义弹出项目的代码如下:

\n
var nli = new FlyoutItem   { FlyoutDisplayOptions = FlyoutDisplayOptions.AsMultipleItems };\nvar nc  = new ShellSection { FlyoutDisplayOptions = FlyoutDisplayOptions.AsMultipleItems };\n\nforeach (var kind in kinds) { // "kinds" is retrieved from a service\n   var csc = new ShellContent { /* ... */ };\n   nc.Items.Add(csc);\n}\n\nnli.Items.Add(nc);\nShellItems.Items.Add(nli);\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

红色区域是该foreach语句所填充的区域。和FlyoutItemShellSection级已FlyoutDisplayOptions正确设置,但元素之间未显示分隔符ShellContent。为什么?

\n

Pra*_*pta 9

要在 FlyoutItems 或 MenuItems 之间添加分隔符,您可以添加带有 DataTemplate 的 MenuItem,如下所示:

<MenuItem>
    <Shell.MenuItemTemplate>
        <DataTemplate>
            <Label HeightRequest="1" BackgroundColor="LightGray"></Label>
        </DataTemplate>
    </Shell.MenuItemTemplate>
</MenuItem>
Run Code Online (Sandbox Code Playgroud)

您也许可以将其转换为代码隐藏。它看起来是这样的:

带分隔符的弹出菜单