The requested page is not available for the requested platform. You are viewing the content for Default platform.

GridControl.IsPullToRefreshEnabled Property

Gets or sets whether the pull-to-refresh functionality is enabled in the grid. This is a bindable property.

Namespace: DevExpress.Mobile.DataGrid

Assembly: DevExpress.Mobile.Grid.v18.2.dll


public bool IsPullToRefreshEnabled { get; set; }
Public Property IsPullToRefreshEnabled As Boolean

Property Value

Type Description

true, to enable the pull-to-refresh feature; otherwise, false.



This documentation topic describes legacy technology. We no longer develop new functionality for the GridControl and suggest that you use the new DataGridView control instead.

The GridControl's pull-to-refresh feature allows end-users to request a grid content update with the pull-down gesture.


To enable this functionality, set the IsPullToRefreshEnabled property to true. Then, either define a refresh command in a view model and bind it to the grid using the GridControl.PullToRefreshCommand property, or handle the GridControl.PullToRefresh event.


This example shows how to add the pull-to-refresh functionality to a grid to allow your end-users update grid content with the pull-down gesture. To do this, follow the steps below.

  1. Set the GridControl.IsPullToRefreshEnabled property to true to enable the grid's pull-to-refresh feature.
  2. Create a command to be executed when an end-user pulls the grid down.
  3. Bind the created command to the grid using the GridControl.PullToRefreshCommand property.


public partial class MainPage : ContentPage
    ProductsRepository repository;
    public static readonly BindableProperty PullToRefreshProperty = BindableProperty.Create<MainPage, ICommand>(o => o.PullToRefreshCommand, null);
    public static readonly BindableProperty ProductsProperty = BindableProperty.Create<MainPage, ObservableCollection<Product>>(o => o.Products, null);

    public Command PullToRefreshCommand {
        get { return (Command)GetValue(PullToRefreshProperty); }
        set { SetValue(PullToRefreshProperty, value); }

    public ObservableCollection<Product> Products {
        get { return (ObservableCollection<Product>)GetValue(ProductsProperty); }
        set { SetValue(ProductsProperty, value); }

    public MainPage () {
        InitializeComponent ();

        BindingContext = this;
        this.repository = new TestProductsRepository();
        this.Products = repository.Products;
        PullToRefreshCommand = new Command(ExecutePullToRefreshCommand);

    void ExecutePullToRefreshCommand() {
        Products = repository.Products;
public abstract class ProductsRepository {
    public ObservableCollection<Product> Products { get; set; }

    public ProductsRepository() {
        this.Products = new ObservableCollection<Product>();

    protected abstract ObservableCollection<Product> GenerateAvailableProducts (int number);

    internal void RefreshProducts() {
        int index = new Random().Next (0, 5);
        Products = GenerateAvailableProducts (index);

public class TestProductsRepository : ProductsRepository {
    readonly List<Product> products;

    public TestProductsRepository() : base() {
        this.products = new List<Product>();


        int index = new Random().Next (0, 5);
        Products = GenerateAvailableProducts (index);

    protected override ObservableCollection<Product> GenerateAvailableProducts(int number) {
        ObservableCollection<Product> availableProducts = new ObservableCollection<Product>();
        for (int i = 0; i < 4; i++)
        return availableProducts;

    void GenerateAllProducts() {
        products.Add(new Product("Beverages") {Description = "Soft drinks, coffees, teas, beers, and ales"});
        products.Add(new Product("Condiments"){Description = "Sweet and savory sauces, relishes, spreads, and seasonings"});
        products.Add(new Product("Confections"){Description = "Desserts, candies, and sweet breads"});
        products.Add(new Product("DairyProducts"){Description = "Cheeses"});
        products.Add(new Product("Grains"){Description = "Breads, crackers, pasta, and cereal"});
        products.Add(new Product("MeatPoultry"){Description = "Prepared meats"});
        products.Add(new Product("Produce"){Description = "Dried fruit and bean curd"});
        products.Add(new Product("Seafood"){Description = "Seaweed and fish"});
<dxGrid:GridControl ItemsSource="{Binding Products}" RowHeight="160"
                    IsPullToRefreshEnabled="true" PullToRefreshCommand="{Binding PullToRefreshCommand}">
See Also