如果您将Xamarin.Forms应用程序视为建筑物,那么您可以使用视图和元素形式的砖块构建此建筑物。 您可以使用布局类将它们排列到墙中,然后使用ContentPage将它们组织到房间中,通过围绕NavigationPage构建的导航功能,可以实现从一个房间到另一个房间的通道。
使用派生自Page的其他可实例化类可以增强这种可视化架构。 这是完整的层次结构:
Page
TemplatedPage
ContentPage
NavigationPage
MasterDetailPage
MultiPage<T>
TabbedPage
CarouselPage
本章专门介绍这些额外的页面衍生词,它们的相似之处在于它们作为父项来管理两个或多个其他页面的可视化表示:
- MasterDetailPage管理两个页面:master通常是数据集合或项目列表,详细信息通常显示集合中的特定项目。
- TabbedPage由选项卡标识的多个子页面组成。您可以使用一组离散页面填充TabbedPage,或者基于数据集合自动生成选项卡和页面,其方式与ListView基于数据集合生成项目的方式非常相似。使用第二个选项,每个选项卡都与集合的成员相关联,使用模板格式化,但此选项不适用于iOS平台。
CarouselPage计划弃用以支持即将发布的CarouselView,因此本章不再讨论。 MultiPage 是抽象的,不能自己实例化,但它定义了TabbedPage的大多数属性和事件。
大师和细节
MasterDetailPage定义了两个属性,名为Master和Detail类型。 通常,您将这两个属性设置为ContentPage类型的对象,但是目前,要使MasterDetailPage在通用Windows平台上工作,详细信息页面必须是NavigationPage。
MasterDetailPage如何在这两个页面之间显示和切换取决于几个因素:底层操作系统,无论是在手机还是平板电脑上运行程序,设备的纵向或横向,以及MasterDetailPage属性的设置名为MasterBehavior。有几种行为是可能的:
- 拆分:主页面和详细页面并排显示,左侧为主页面,右侧为详细信息。
- popover:详细信息页面设置动画以覆盖或部分覆盖母版页。有三种可能性:
o slide:详细信息和母版页来回滑动。
o重叠:详细页面部分覆盖母版页。
o swap:详细信息页面完全遮盖了母版页。
理论上,MasterDetailPage的MasterBehavior属性允许您在分割和弹出行为之间进行选择。您将此属性设置为MasterBehavior枚举的五个成员之一: - Default
- Split
- SplitOnLandscape
- SplitOnPortrait
- Bopover
但是,正如您将看到的那样,MasterBehavior属性的设置对于在手机上运行的应用程序没有任何影响。它仅影响在平板电脑或桌面上运行的应用程序。电话总是表现出弹出行为。此行为是导致幻灯片,重叠还是交换取决于平台。