Xamarin.FormsのCollectionViewについてメモ
環境
- Xamarin.Forms 4.4 preview2
遅延ローディングが簡単にできる! などなど。 こりゃすごい. https://devblogs.microsoft.com/xamarin/5-quick-tips-for-collectionview/
CollectionView, CarouselViewなどXamarin.FormsのUIコントロールの便利な機能を紹介している.
CollectionViewのItemの配置(レイアウト)はCollectionView.ItemLayout
で指定する.
レイアウトの種類は2つある.
- GridItemsLayout グリッド状に配置する.複数列.
- LinearItemsLayout 一列のみ.
それぞれ,項目間の隙間,スクロールさせたときに画面前端,中央,後端(または上端,中央,下端)にスナップ(吸い付くようにする)させるか,などを指定できる.
スナップの種類
SnapPointsType
(スナップのタイプ)は以下の3つ
Mandatory 止まる直前にスナップさせる
MandatorySingle スナップさせるとともにスクロールは1アイテムずつだけ
None スナップさせずに自然に止まる
スナップさせる位置
スナップさせる位置は以下の3つ.
Start 一番上のアイテムが上端にスナップする
Center 中央のアイテムが中央にスナップする
End 一番下のアイテムが下端にスナップする
CollectionViewはListViewに比べて表現が豊富というか柔軟だと思う.
列数を簡単に変えられるし,スクロール時の挙動ももちろん変えられる.
遅延ローディングの機能もある.
アイテムの増分読み込み
遅延ローディング.
まだ表示されていないアイテムの数がRemainingItemsThreshold
で指定した正の整数に達したらRemainingItemsThresholdReachedCommand
に指定したCommandが実行される.もしくはRemainingItemsThresholdReached
イベントが用意されているので,そのイベントハンドラを用意する.
<CollectionView ItemsSource="{Binding People}" RemainingItemsThreshold="{Binding RemainItemsThreshold}" RemainingItemsThresholdReachedCommand="{Binding RemainingItemsThresholdReachedCommand}" HorizontalOptions="Center" Margin="50" SelectionMode="Single" SelectionChanged="CollectionView_SelectionChanged" ItemSizingStrategy="MeasureFirstItem" >
RemainingItemsThreshold
を-1
にするとこの機能を無効にできる.
RemainingItemsThreshold
にデータバインドしたときにRemainingItemsThresholdReachedCommand
が発火されない場合は最新のバージョンにアップデートするといい.
アイテムの選択を可能にする
SelectionMode
で設定する.
- Single
- Multiple
- None
SelectionChanged
のsenderから,一つ前に選択していたアイテム,現在選択しているアイテムを取得できる.
取得できるのはバインディングされているオブジェクト.