У меня есть представление списка Xamarin.Forms, которое я хочу обновить при извлечении:
<ListView x:Name="listView"
ItemsSource="{Binding Announcements}"
HasUnevenRows="true"
IsPullToRefreshEnabled="true"
IsRefreshing="{Binding IsRefreshing}">
Код сзади:
private bool isRefreshing = false;
public bool IsRefreshing
{
get { return isRefreshing; }
set
{
isRefreshing = value;
OnPropertyChanged(nameof(IsRefreshing));
}
}
private void SetListViewToRefreshOnPull()
{
listView.RefreshCommand = new Command(async () =>
{
IsRefreshing = true;
await RefreshData; // After awaiting here, the spinner changes appearance.
IsRefreshing = false;
});
}
private Task RefreshData => Task.Delay(5000);
Конечно, я заставил команду обновления ждать5 секунд, чтобы смоделировать медленный ответ API.
При перетягивании списка вниз отображается счетчик, как и ожидалось:
Однако, каккак только задача RefreshData
начинает ждать 5 секунд, вертушка переходит в странное «деформированное» состояние, которое не вращается:
полный счетчик показывается только за долю секунды до деформированного, поэтому такое поведение не является идеальным. Есть ли какой-нибудь способ заставить полноценный спиннер оставаться в течение всего времени асинхронного обновления?