Xamarin.Forms RefreshView
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
, CollectionView
ou ListView
.
RefreshView
define as propriedades a seguir:
Command
, do tipoICommand
, que é executado quando uma atualização é disparada.CommandParameter
, do tipoobject
, que é o parâmetro passado paraCommand
.IsRefreshing
, do tipobool
, que indica o estado atual doRefreshView
.RefreshColor
, do tipoColor
, 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:
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:
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.