Xamarin.Forms CollectionView 简介

Download Sample下载示例

CollectionView 是使用不同布局规范显示数据列表的视图。 它的目标是提供取代 ListView 的更灵活、更高效的方案。 例如,以下屏幕截图显示的 CollectionView 使用了一个两列垂直网格,并且它允许多选:

Screenshot of a CollectionView vertical grid layout, on iOS and Android

CollectionView 应用于显示需要滚动或选择的数据列表。 当要显示的数据不需要滚动或选择时,可以使用可绑定布局。 有关详细信息,请参阅 Xamarin.Forms 中的可绑定布局

CollectionView 从 Xamarin.Forms 4.3 起可用。

重要

CollectionView 在 iOS 和 Android 上可用,但在通用 Windows 平台上仅部分可用

CollectionView 和 ListView 的区别

虽然 CollectionViewListView API 很相似,但也存在一些显著的差异:

从 ListView 迁移到 CollectionView

可以根据下表的帮助信息,将现有 Xamarin.Forms 应用程序中的 ListView 实现迁移到 CollectionView 实现:

概念 ListView API CollectionView
数据 ItemsSource 可通过设置 CollectionViewItemsSource 属性来向其填充数据。 有关详细信息,请参阅使用数据填充 CollectionView
项外观 ItemTemplate 通过将 ItemTemplate 属性设置为 DataTemplate,可以定义 CollectionView 中每个项的外观。 有关详细信息,请参阅定义项外观
单元 TextCell, ImageCell, ViewCell CollectionView 没有单元格的概念,因此也没有披露指示器的概念。 实际上,会使用一个数据模板来定义列表中每个数据项的外观。
行分隔符 SeparatorColorSeparatorVisibility CollectionView 不包含内置分隔符。 如果需要,可以在项模板中提供这些内容。
选择 SelectionModeSelectedItem CollectionView 支持单项和多项选择。 有关详细信息,请参阅 Xamarin.Forms CollectionView 选择
行高 HasUnevenRowsRowHeight CollectionView 中,每个项的行高由 ItemSizingStrategy 属性确定。 有关详细信息,请参阅调整项大小
缓存 CachingStrategy CollectionView 将自动使用基础本机控件提供的虚拟化。
页眉和页脚 Header, HeaderElement, HeaderTemplate, Footer, FooterElement, FooterTemplate CollectionView 可以通过 HeaderFooterHeaderTemplateFooterTemplate 属性显示随列表中的项目滚动的页眉和页脚。 有关详细信息,请参阅页眉和页脚
分组 GroupDisplayBinding, GroupHeaderTemplate, GroupShortNameBinding, IsGroupingEnabled CollectionView 通过将其 IsGrouped 属性设置为 true 来显示正确分组的数据。 通过将 GroupHeaderTemplateGroupFooterTemplate 属性设置为 DataTemplate 对象,可以自定义组页眉和组页脚。 有关详细信息,请参阅 Xamarin.Forms CollectionView 分组
下拉以刷新 IsPullToRefreshEnabled, IsRefreshing, RefreshAllowed, RefreshCommand, RefreshControlColor, BeginRefresh(), EndRefresh() 通过将 CollectionView 设置为 RefreshView 的子级,支持“下拉以刷新”功能。 有关详细信息,请参阅下拉以刷新
上下文菜单项 ContextActions 可通过将 SwipeView 设置为 DataTemplate 中的根视图来支持上下文菜单项,该视图定义了 CollectionView 中每个数据项的外观。 有关详细信息,请参阅上下文菜单
滚动 ScrollTo() CollectionView 定义将项滚动到视图中的 ScrollTo 方法。 有关详细信息,请参阅滚动