Introduction

Xamarin.Forms - Working With RefreshView
Xamarin.Forms code runs on multiple platforms, each of which has its own filesystem. This means that reading and writing files is most easily done using the native file APIs on each platform. Alternatively, embedded resources are a simpler solution to distribute data files with an app.

RefreshView (Pull to Refresh)

RefreshView is a container control that provides a pull to refresh functionality for scrollable content. Therefore, the child of a RefreshView must be a scrollable control, such as ScrollView, CollectionView, or ListView.
Prerequisites
  • Visual Studio 2017 or later (Windows or Mac)

Setting up a Xamarin.Forms Project

Start by creating a new Xamarin.Forms project. You wíll learn more by going through the steps yourself.
Create a new or existing Xamarin forms(.Net standard) Project. With Android and iOS Platform.
Xamarin.Forms - Working With RefreshView

Use RefreshView

Make sure your controls should be within ScrollView.
  1. <RefreshView IsRefreshing="{Binding IsRefreshing}" RefreshColor="Red"
  2. Command="{Binding RefreshViewCommand}">
  3. <ScrollView>
  4. // Your Controls
  5. </ScrollView>
  6. </RefreshView>

Setting up the User Interface

Here, Add RefreshView in your View. Make sure your content should be within ScrollView.
MainPage.Xaml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Pages:XMonkeyBasePage xmlns="http://xamarin.com/schemas/2014/forms"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
  4. xmlns:Behavior="clr-namespace:Prism.Behaviors;assembly=Prism.Forms"
  5. xmlns:Pages="clr-namespace:XMonkey.Common.Pages"
  6. xmlns:CustomViews="clr-namespace:XMonkey.Common.CustomViews"
  7. x:Class="XMonkey.Views.BlogFeedPage">
  8. <NavigationPage.TitleView>
  9. <CustomViews:XMonkeyTitleView />
  10. </NavigationPage.TitleView>
  11. <Pages:XMonkeyBasePage.Behaviors>
  12. <Behavior:EventToCommandBehavior EventName="Appearing" Command="{Binding RefreshCommand}"/>
  13. <Behavior:EventToCommandBehavior EventName="Disappearing" Command="{Binding CleanUpCommand}"/>
  14. </Pages:XMonkeyBasePage.Behaviors>
  15. <Pages:XMonkeyBasePage.PageContent>
  16. <RefreshView IsRefreshing="{Binding IsRefreshing}"
  17. Command="{Binding RefreshViewCommand}">
  18. <ScrollView>
  19. <FlexLayout Direction="Column" Margin="0,100,0,0"
  20. AlignItems="Center">
  21. <Label FontSize="Large" Text="{Binding Name}"/>
  22. </FlexLayout>
  23. </ScrollView>
  24. </RefreshView>
  25. </Pages:XMonkeyBasePage.PageContent>
  26. </Pages:XMonkeyBasePage>

Add RefreshCommand

Now, Add RefreshCommand for your RefreshView. This Command will perform while pull to refresh. After Refresh your data don't forget set IsRefreshing=false;
MainPageViewModel.cs
  1. namespace XMonkey.ViewModels
  2. {
  3. public class BlogFeedPageViewModel:BaseViewModel
  4. {
  5. #region Fields
  6. private string _name;
  7. private bool _isRefreshing;
  8. private Command _refreshViewCommand;
  9. #endregion
  10. #region Constructor
  11. public BlogFeedPageViewModel()
  12. {
  13. }
  14. #endregion
  15. #region Properties
  16. public string Name
  17. {
  18. get => _name;
  19. set => SetProperty(ref _name, value);
  20. }
  21. public bool IsRefreshing
  22. {
  23. get => _isRefreshing;
  24. set => SetProperty(ref _isRefreshing, value);
  25. }
  26. public Command RefreshViewCommand
  27. {
  28. get
  29. {
  30. return _refreshViewCommand ?? (_refreshViewCommand = new Command(() =>
  31. {
  32. this.RefreshData();
  33. }));
  34. }
  35. }
  36. #endregion
  37. #region Methods
  38. private void RefreshData()
  39. {
  40. //Do your stuff
  41. this.Name = "Delpin";
  42. this.IsRefreshing = false;
  43. }
  44. #endregion
  45. }
  46. }
Click the "Play" button to try it out.
Xamarin.Forms - Working With RefreshView

Change Refresh ActivityIndicator Color

Now, Change Refresh ActivityIndicator Color. Set RefreshColor="Color". Check the below code:
MainPage.xaml
  1. <RefreshView IsRefreshing="{Binding IsRefreshing}" RefreshColor="Red"
  2. Command="{Binding RefreshViewCommand}">
  3. <ScrollView>
  4. <FlexLayout Direction="Column" Margin="0,100,0,0"
  5. AlignItems="Center">
  6. <Label FontSize="Large" Text="{Binding Name}"/>
  7. </FlexLayout>
  8. </ScrollView>
  9. </RefreshView>
Click the "Play" button to try it out.
Xamarin.Forms - Working With RefreshView
Wow, it's working.Xamarin.Forms - Working With RefreshView
I hope you have understood how to use implement Pull to Refresh the Entire Page using RefreshView in Xamarin.Forms.
Thanks for reading. Please share your comments and feedback. Happy Coding Xamarin.Forms - Working With RefreshView