shuhelohelo’s blog

Xamarin.Forms多めです.

RefreshViewはリストだけじゃなくてなんにでも使える

タイトルのとおり,RefreshViewで囲んだコントロールPull-To-Refresh(下に引っ張って更新)できるようになる.

Imageは試した.

画像を下に引っ張ると別の画像に変わる,といったことができる.

                <RefreshView Command="{Binding AvatarRefreshCommand}" IsRefreshing="{Binding IsAvatarRefreshing}">
                    <Image
                        x:Name="AvatarImage"
                        HorizontalOptions="Center"
                        Source="{Binding AvatarUri}"
                        VerticalOptions="Center"
                        WidthRequest="150" />
                </RefreshView>
        private async Task ExecuteAvatarRefreshCommand(object obj)
        {
            var newAvatarUri = DataFactory.GetPeople(30).Random().Take(1).First().AvatarUrl;

            //ちゃんとぐるぐるが小さくなって自然に消えるようにするためには,
            //ここでDelayを挟むと良い.なぜかはわからない.
            await Task.Delay(1000);//0じゃなければ良いが,自然に見せるために1秒とっている.
            IsAvatarRefreshing = false;

            AvatarUri = newAvatarUri;
        }

# ソースコード

[https://github.com/shuheydev/JXUG20191209Sample/blob/master/XamarinFormsUiPractice/XamarinFormsUiPractice/XamarinFormsUiPractice/Views/RefreshViewPage.xaml:embed:cite]