Xamarin.Forms CollectionView

Автор:

learn.microsoft.com

CollectionView – это представление для вывода списков данных с использованием различных спецификаций компоновки. Оно призвано стать более гибкой и производительной альтернативой ListView. Например, на следующих скриншотах показан элемент CollectionView, использующий вертикальную сетку с двумя колонками и позволяющий осуществлять множественный выбор:

CollectionView следует использовать для представления списков данных, требующих прокрутки или выбора. Если отображаемые данные не требуют прокрутки или выделения, можно использовать привязываемый макет. CollectionView доступен начиная с версии Xamarin.Forms 4.3.

Важно. CollectionView доступен на iOS и Android, но лишь частично доступен на Universal Windows Platform.

Различия CollectionView и ListView

Несмотря на схожесть API-интерфейсов CollectionView и ListView, существуют некоторые заметные различия:

  • CollectionView имеет гибкую модель компоновки, которая позволяет представлять данные вертикально или горизонтально, в виде списка или сетки.
  • CollectionView поддерживает одиночный и множественный выбор.
  • В CollectionView отсутствует понятие ячеек. Вместо этого для определения внешнего вида каждого элемента данных в списке используется шаблон данных.
  • CollectionView автоматически использует виртуализацию, предоставляемую базовыми элементами управления.
  • CollectionView уменьшает поверхность API ListView. Многие свойства и события ListView отсутствуют в CollectionView.
  • CollectionView не содержит встроенных разделителей.
  • CollectionView будет выбрасывать исключение, если его ItemsSource обновляется вне потока пользовательского интерфейса.

Переход от ListView к CollectionView

Реализации ListView в существующих приложениях Xamarin.Forms могут быть перенесены на реализацию CollectionView с помощью следующей таблицы:

КонцепцияListView APICollectionView
ДанныеItemsSourceCollectionView заполняется данными путем установки свойства ItemsSource
Внешний вид элементаItemTemplateВнешний вид каждого элемента в CollectionView может быть определен путем установки свойства ItemTemplate в DataTemplate.
Ячейки TextCell, ImageCell, ViewCellВ CollectionView отсутствует понятие ячеек, а значит, и понятие индикаторов раскрытия. Вместо этого для определения внешнего вида каждого элемента данных в списке используется шаблон данных.
Разделители строкSeparatorColor, SeparatorVisibilityCollectionView не содержит встроенных разделителей. При желании их можно указать в шаблоне элемента.
ВыборSelectionMode, SelectedItemCollectionView поддерживает одиночное и множественное выделение.
Высота строкиHasUnevenRows, RowHeightВ CollectionView высота строки каждого элемента определяется свойством ItemSizingStrategy.
КэшированиеCachingStrategyCollectionView автоматически использует виртуализацию, обеспечиваемую базовыми собственными элементами управления.
Верхние и нижние колонтитулыHeader, HeaderElement, HeaderTemplate, Footer, FooterElement, FooterTemplateCollectionView может представлять верхний и нижний колонтитулы, которые прокручиваются вместе с элементами списка, с помощью свойств Header, Footer, HeaderTemplate и FooterTemplate.
ГруппированиеGroupDisplayBinding, GroupHeaderTemplate, GroupShortNameBinding, IsGroupingEnabledCollectionView отображает правильно сгруппированные данные, установив свойство IsGrouped в true. Верхние и нижние колонтитулы групп можно настраивать, устанавливая свойства GroupHeaderTemplate и GroupFooterTemplate для объектов DataTemplate.
Обновление путем оттягиванияIsPullToRefreshEnabled, IsRefreshing, RefreshAllowed, RefreshCommand, RefreshControlColor, BeginRefresh(), EndRefresh()Функциональность Pull to refresh поддерживается путем установки CollectionView в качестве дочернего элемента RefreshView.
Элементы контекстного менюContextActionsПункты контекстного меню поддерживаются путем задания SwipeView в качестве корневого представления в шаблоне DataTemplate, определяющем внешний вид каждого элемента данных в CollectionView.
ПрокруткаScrollTo()CollectionView определяет методы ScrollTo, которые прокручивают элементы в поле зрения.

Материалы по теме