问题描述
在我的 Xamarin.Forms Shell 应用程序中,我在 AppShell.xaml.cs
文件而不是 AppShell.xaml
文件中定义弹出项目,因为我需要以编程方式定义它们。 Here,我读到我可以使用 FlyoutdisplayOptions.AsMultipleItems
值来获取分隔符。因此,我不明白为什么在我使用 ShellSection
元素并将其 FlyoutdisplayOptions
设置为 FlyoutdisplayOptions.AsMultipleItems
时 Xamarin 不显示分隔符。我用来定义弹出项目的代码如下:
var nli = new FlyoutItem { FlyoutdisplayOptions = FlyoutdisplayOptions.AsMultipleItems };
var nc = new ShellSection { FlyoutdisplayOptions = FlyoutdisplayOptions.AsMultipleItems };
foreach (var kind in kinds) { // "kinds" is retrieved from a service
var csc = new ShellContent { /* ... */ };
nc.Items.Add(csc);
}
nli.Items.Add(nc);
ShellItems.Items.Add(nli);
红色区域是由 foreach
语句填充的区域。 FlyoutItem
和 ShellSection
父项的 FlyoutdisplayOptions
设置正确,但分隔符未显示在 ShellContent
元素之间。为什么?
解决方法
要在 FlyoutItems 或 MenuItems 之间添加分隔符,您可以添加带有 DataTemplate 的 MenuItem,如下所示:
<MenuItem>
<Shell.MenuItemTemplate>
<DataTemplate>
<Label HeightRequest="1" BackgroundColor="LightGray"></Label>
</DataTemplate>
</Shell.MenuItemTemplate>
</MenuItem>
您或许可以将其转换为代码隐藏。 这是它的外观:
,应该是shell中的默认现象,FlyoutItem中的项之间没有分隔符。
你可以看看official document: