.NET 多平臺應用程式 UI (.NET MAUI) CollectionView 是使用不同版面配置規格呈現資料清單的檢視。 它旨在提供更靈活、更高效能的替代方案 ListView。
下列螢幕擷取畫面顯示使用兩欄垂直方格並允許多個選取的 A CollectionView :
CollectionView 應該用來呈現需要捲動或選取的資料清單。 當要顯示的資料不需要捲動或選取時,可以使用可繫結的版面配置。 如需詳細資訊,請參閱 BindableLayout。
備註
在 iOS 和 Mac Catalyst 上,.NET 9 中選擇性的最佳化處理常式是 .NET 10 中預設的處理常式 CollectionView ,可提供改善的效能和穩定性。
還原為 .NET 9 行為
建議您使用 的新處理常式 CollectionView,但如果您想要選擇退出此行為並還原回 .NET 9 處理常式,您可以在 MauiProgram.cs.
#if IOS || MACCATALYST
builder.ConfigureMauiHandlers(handlers =>
{
handlers.AddHandler<Microsoft.Maui.Controls.CollectionView, Microsoft.Maui.Controls.Handlers.Items.CollectionViewHandler>();
});
#endif
CollectionView 和 ListView 的差異
雖然 和 CollectionViewListView API 相似,但有一些顯著差異:
- CollectionView 具有靈活的佈局模型,允許資料以清單或網格形式垂直或水平呈現。
- CollectionView 支援單選和多選。
- CollectionView 沒有細胞的概念。 相反地,會使用資料範本來定義清單中每個資料項目的外觀。
- CollectionView 自動利用基礎原生控制項所提供的虛擬化。
- CollectionView 減少 的 API 表面 ListView。 中的ListView許多屬性和事件不存在於 中。CollectionView
- CollectionView 不包括內建分隔符號。
-
CollectionView 如果從
ItemsSourceUI 執行程更新,則會擲回例外狀況。
從 ListView 移至 CollectionView
ListView 實作可以移轉至 CollectionView 實作,藉助下表:
| 概念 | ListView API | 收藏視圖 |
|---|---|---|
| 資料 | ItemsSource |
A CollectionView 會透過設定其 ItemsSource 屬性來填入資料。 如需詳細資訊,請參閱 使用 資料填入 CollectionView。 |
| 物品外觀 | ItemTemplate |
可以將屬性設定ItemTemplate為 DataTemplate來定義 中CollectionView每個項目的外觀。 如需詳細資訊,請參閱 定義項目外觀。 |
| 細胞 | TextCell、ImageCell、ViewCell | CollectionView 沒有單元格的概念,因此也沒有披露指標的概念。 相反地,會使用資料範本來定義清單中每個資料項目的外觀。 |
| 列分隔符號 |
SeparatorColor、SeparatorVisibility |
CollectionView 不包括內建分隔符號。 如果需要,可以在項目範本中提供這些。 |
| Selection |
SelectionMode、SelectedItem |
CollectionView 支援單選和多選。 如需詳細資訊,請參閱 設定 CollectionView 專案選取。 |
| 列高 |
HasUnevenRows、RowHeight |
在 CollectionView中,每個項目的列高由屬性決定 ItemSizingStrategy 。 如需詳細資訊,請參閱 項目大小調整。 |
| 緩存 | CachingStrategy |
CollectionView 自動使用基礎原生控制項所提供的虛擬化。 |
| 頁首和頁尾 |
Header、HeaderElement、HeaderTemplate、Footer、FooterElement、FooterTemplate |
CollectionView可以透過 、 、 FooterHeaderTemplate和FooterTemplate屬性呈現Header與清單中的專案一起捲動的頁首和頁尾。 如需詳細資訊,請參閱 頁首和頁尾。 |
| Grouping |
GroupDisplayBinding、GroupHeaderTemplate、GroupShortNameBinding、IsGroupingEnabled |
CollectionView 透過將其 IsGrouped 屬性設定為 true來顯示正確分組的資料。 群組頁首和群組頁尾可以透過將 和 GroupFooterTemplate 屬性設定GroupHeaderTemplate為DataTemplate物件來自訂。 如需詳細資訊,請參閱 在 CollectionView 中顯示分組資料。 |
| 提取以重新整理 |
IsPullToRefreshEnabled、IsRefreshing、RefreshAllowed、RefreshCommand、RefreshControlColor、BeginRefresh()、EndRefresh() |
將 a CollectionView 設定為 的 RefreshView子系,即可支援提取重新整理功能。 如需詳細資訊,請參閱 提取以重新整理。 |
| 內容選單項目 | ContextActions |
透過將 a SwipeView 設定為根檢視來支援內容功能表項目,該檢視 DataTemplate 定義了 中 CollectionView每個資料項目的外觀。 如需詳細資訊,請參閱 內容功能表。 |
| 捲動 | ScrollTo() |
CollectionView
ScrollTo定義方法,將項目捲動到檢視中。 如需詳細資訊,請參閱 控制 CollectionView 中的捲動。 |
瀏覽範例