Xamarin.Forms RefreshView

Baixar exemplo Baixar o exemplo

O RefreshView é um controle de contêiner que fornece a funcionalidade de pull para atualizar o conteúdo rolável. Portanto, o filho de um RefreshView deve ser um controle rolável, como ScrollView, CollectionViewou ListView.

RefreshView define as propriedades a seguir:

  • Command, do tipo ICommand, que é executado quando uma atualização é disparada.
  • CommandParameter, do tipo object, que é o parâmetro passado para Command.
  • IsRefreshing, do tipo bool, que indica o estado atual do RefreshView.
  • RefreshColor, do tipo Color, a cor do círculo de progresso que aparece durante a atualização.

Essas propriedades são apoiadas por BindableProperty objetos, o que significa que elas podem ser destinos de associações de dados e estilizadas.

Observação

Universal Windows PlatformNo , a direção de pull de um RefreshView pode ser definida com uma plataforma específica. Para obter mais informações, consulte RefreshView Pull Direction.

Criar um RefreshView

O exemplo a seguir mostra como instanciar um RefreshView no XAML:

<RefreshView IsRefreshing="{Binding IsRefreshing}"
             Command="{Binding RefreshCommand}">
    <ScrollView>
        <FlexLayout Direction="Row"
                    Wrap="Wrap"
                    AlignItems="Center"
                    AlignContent="Center"
                    BindableLayout.ItemsSource="{Binding Items}"
                    BindableLayout.ItemTemplate="{StaticResource ColorItemTemplate}" />
    </ScrollView>
</RefreshView>

Um RefreshView também pode ser criado no código:

RefreshView refreshView = new RefreshView();
ICommand refreshCommand = new Command(() =>
{
    // IsRefreshing is true
    // Refresh data here
    refreshView.IsRefreshing = false;
});
refreshView.Command = refreshCommand;

ScrollView scrollView = new ScrollView();
FlexLayout flexLayout = new FlexLayout { ... };
scrollView.Content = flexLayout;
refreshView.Content = scrollView;

Neste exemplo, o RefreshView fornece o pull para atualizar a funcionalidade para um ScrollView cujo filho é um FlexLayout. O FlexLayout usa um layout associável para gerar seu conteúdo associando a uma coleção de itens e define a aparência de cada item com um DataTemplate. Para obter mais informações sobre layouts associáveis, consulte Layouts associáveis em Xamarin.Forms.

O valor da RefreshView.IsRefreshing propriedade indica o estado atual do RefreshView. Quando uma atualização é disparada pelo usuário, essa propriedade fará a transição automática para true. Depois que a atualização for concluída, você deverá redefinir a propriedade para false.

Quando o usuário inicia uma atualização, o ICommand definido pela Command propriedade é executado, o que deve atualizar os itens que estão sendo exibidos. Uma visualização de atualização é mostrada enquanto a atualização ocorre, que consiste em um círculo de progresso animado:

Captura de tela de um RefreshView dado de atualização, no iOS e no Android

Observação

Definir manualmente a IsRefreshing propriedade como true disparará a visualização de atualização e executará o ICommand definido pela Command propriedade .

Aparência da RefreshView

Além das propriedades herdadas RefreshView da VisualElement classe , RefreshView também define a RefreshColor propriedade . Essa propriedade pode ser definida para definir a cor do círculo de progresso que aparece durante a atualização:

<RefreshView RefreshColor="Teal"
             ... />

A captura de tela a seguir mostra um RefreshView com o RefreshColor conjunto de propriedades:

Captura de tela de um RefreshView com um círculo de progresso de téal, no iOS e no Android

Além disso, a BackgroundColor propriedade pode ser definida como um Color que representa a cor da tela de fundo do círculo de progresso.

Observação

No iOS, a BackgroundColor propriedade define a cor da tela de fundo do UIView que contém o círculo de progresso.

Desabilitar um RefreshView

Um aplicativo pode inserir um estado em que o pull para atualizar não é uma operação válida. Nesses casos, o RefreshView pode ser desabilitado definindo sua IsEnabled propriedade como false. Isso impedirá que os usuários possam disparar o pull para atualizar.

Como alternativa, ao definir a Command propriedade , o CanExecute delegado do ICommand pode ser especificado para habilitar ou desabilitar o comando.