xaml - Xamarin Form Shell:Flyout v/s TabBar
问题描述
读到句子我很困惑
TabBar 禁用 Flyout
在 Xamarin 文档中。但即使是示例代码也在 Flyout 布局中显示 TabBar。我想,我误解了 Flyout 和 TabBar(我的想法是按照附件)。任何人都可以想象其中的区别。Google 搜索并没有在 TabBar 上提供太多信息,它只是显示标准文档。
解决方案
这意味着如果您仅将其用作 Shell 的根Tabbar
元素,您将失去.Flyout
FlyoutItem
从另一方面来看,您不能明确地将 a 嵌套在 aFlyoutItem
内部Tabbar
或相反的内部。
使用 a 时,您仍然可以定义 ( Tabbar
) 底部选项卡,但不能明确定义:
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent Title="First"
ContentTemplate="{DataTemplate local:Page1}"/>
<ShellContent Title="Seconde"
ContentTemplate="{DataTemplate local:Page2}"/>
</FlyoutItem>
在此示例中,Page1 和 Page2 将显示为底部选项卡和弹出项。
如果由于某些原因您只想将页面显示为底部选项卡(将其隐藏在弹出窗口中),那么您可以FlyoutItemIsVisible="False"
对其进行设置ShellContent
:
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent Title="First"
ContentTemplate="{DataTemplate local:Page1}"/>
<ShellContent Title="Seconde" FlyoutItemIsVisible="False"
ContentTemplate="{DataTemplate local:Page2}"/>
</FlyoutItem>
编辑
在没有显式 Tabbar 元素的情况下生成浮出控件的底部和顶部选项卡示例
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<Tab Title="1st Bottom Tab">
<ShellContent Title="1st Top tab"
ContentTemplate="{DataTemplate local:Page1}"/>
<ShellContent Title="Seconde" FlyoutItemIsVisible="False"
ContentTemplate="{DataTemplate local:Page2}"/>
</Tab>
<Tab Title="2nd Bottom Tab">
<ShellContent Title="First"
ContentTemplate="{DataTemplate local:Page1}"/>
<ShellContent Title="Seconde" FlyoutItemIsVisible="False"
ContentTemplate="{DataTemplate local:Page2}"/>
</Tab>
</FlyoutItem>
结论
如果你想要一个浮出控件(无论它是除了顶部或底部或两者的选项卡之外),请使用 a
FlyoutItem
作为根元素(不需要 Tabbar)。如果您不想将弹出窗口
Tabbar
作为根元素。
推荐阅读
- r - 删除 *all* 重复行,除非有“相似”行
- c# - 从服务器 MailKit 跳过并接收电子邮件
- node.js - 模块“express”未在 package.json 中列为依赖项
- javascript - 你如何动态设置chart.js背景颜色渐变?
- node.js - 为什么在使用 preset-env 节点时无法解析 nodejs 默认模块?
- php - 使用复选框从数据库中提取电子邮件地址(PHP、MYSQL)
- dependency-injection - 如何通过实体内的注入服务访问查找数据?
- python - 无法从当前工作目录之外导入函数
- sql - 如何在按不同字段分组时查询过去 n 个月的平均值
- ruby - Ruby 无法从 Azure 实例元数据服务获取 Azure VM 元数据