Xamarin.Forms のドキュメント
Pull-to-refresh
コントロール > FlexGrid > 機能 > Pull-to-refresh

Pull-to-refresh(引っ張って更新する)は、指で携帯機器の画面をタッチし、下にドラッグしてから放すことで画面のコンテンツを更新する、タッチ画面ジェスチャです。この機能は、グリッドを最初にロードした後に、それに含まれる項目が変更される可能性がある場合に便利です。

FlexGrid では、AllowRefreshing を true に設定すると共に、C1CursorCollectionView を実装して動的データをシミュレートする新しいクラスを作成することで、PullToRefresh 機能を実現できます。このサンプルでは、グリッドの ItemSource プロパティを MyCollectionView() メソッドに設定し、このメソッドで PageSize と、グリッドに表示する項目数を定義しています。

次の図は、プルダウンジェスチャを使用してページのデータを更新する様子を示しています。

次のコード例は、C# でこのプロパティを設定する方法を示します。この例では、「クイックスタート」セクションで作成した Customer.cs データモデルを使用しています。

コードの場合

QuickStart.cs ファイルに次のコードを追加して、FlexChart コントロールにラインマーカーを表示します。

C#
コードのコピー
class QuickStart
    {
        public static FlexGrid GetGridControl()
        {
            //コントロールのインスタンスを作成し、そのプロパティを設定する
            FlexGrid grid = new FlexGrid();
            grid.ItemsSource = new MyCollectionView();           
            grid.AllowRefreshing = true; 
            return grid;
        }
    }

MyCollectionView.cs

C#
コードのコピー
public class MyCollectionView : C1CursorCollectionView<Customer>
    {
        ObservableCollection<Customer> items;
        public MyCollectionView()
        {
            PageSize = 50;
            items = Customer.GetCustomerList(300);
        }

        public int PageSize { get; set; }

        protected override async Task<Tuple<string, IReadOnlyList<Customer>>> GetPageAsync(int startingIndex, string pageToken, int? count = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            return await Task.Run(() =>
            {
                var moreItems = new ObservableCollection<Customer>(items.Skip(startingIndex).Take(PageSize));
                return new Tuple<string, IReadOnlyList<Customer>>("Token not used", moreItems);
            });
        }
    }