Xamarin.Forms stellt ab der Version 1.4 die Funktionalität Pull to Refresh zur Verfügung. Damit ist es dem Benutzer möglich eine ListView selbständig zu aktualisieren.
public event EventHandler Refreshing;
public bool IsPullToRefreshEnabled { get; set; } = false;
public bool IsRefreshing { get; set; } = false;
public ICommand RefreshCommand { get; set; } = null;
public void BeginRefresh ();
public void EndRefresh ();
Sobald der Benutzer die «Pull to Refresh» Funktion ausführt, wird der RefreshCommand aufgerufen, der Refreshed-Event ausgelöst und IsRefreshing wird auf True gesetzt. Anschliessend wird eine plattformabhängige Animation solange sichtbar, bis IsRefreshing auf False gesetzt oder beim Event die EndRefresh-Methode aufgerufen wird. Mit MVVM verwende ich den RefreshCommand zusammen mit dem IsRefreshing-Flag wie folgt. Zuerst die View mit der ListView:
<ListView x:Name="listViewNews"
ItemsSource="{Binding ListNews}"
IsPullToRefreshEnabled="True"
RefreshCommand="{Binding LoadNewsCommand}"
IsRefreshing="{Binding IsBusy}"
HasUnevenRows="True">
Das dazugehörige ViewModel implementiert den RefreshCommand und setzt IsBusy auf False sobald die ListView mit den aktuellsten News geladen wurde.
private bool _isBusy;
public bool IsBusy
{
get
{
return _isBusy;
}
set
{
_isBusy = value;
// Mit der ViewModelBase-Klasse von GalaSoft.MvvmLight muss nur diese
// Funktion aufgerufen werden anstatt OnPropertyChanged("IsBusy").
RaisePropertyChanged();
}
}
private Command _loadNewsCommand;
public ICommand LoadNewsCommand
{
get
{
return _loadnewsCommand ?? (_loadNewsCommand =
new Command(RefreshNews, () => !IsBusy));
}
}
private async void RefreshNews()
{
IsBusy = true;
// Refresh all News and update ListView
IsBusy = false;
}
Da ich IsBusy auf True setzte sobald der RefreshCommand aufgerufen wird, kann ich IsBusy auch gleich für die CanExecute-Methode verwenden.
Mit Xamarin.Forms 1.4 kann ohne grossen Aufwand ein Feature in die Mobile-App implementiert werden, welches für iOS- und Android Benutzer zum Standard gehört und von den meisten schlicht erwartet wird.
Schreiben Sie einen Kommentar