J'ai parcouru Internet pour trouver ce qui serait probablement une solution simple, mais aucun ne semblait avoir eu le même problème que moi.Tirer pour rafraîchir l'exécution de la commande une seule fois
Donc, pour l'expliquer brièvement, je l'aide des formulaires Xamarin et j'ai ListView:
<ListView x:Name="kpiList"
Style="{StaticResource customList}"
HasUnevenRows="true"
SeparatorVisibility="None"
IsPullToRefreshEnabled="true"
Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="3">
</ListView>
Je PRIS RefreshCommand et les propriétés IsRefreshing comme ceci:
public partial class MainPage : ContentPage
{
bool _isRefreshing = false;
public bool IsRefreshing
{
get { return _isRefreshing; }
set
{
_isRefreshing = value;
OnPropertyChanged(nameof(IsRefreshing));
}
}
public ICommand RefreshData;
public MainPage()
{
RefreshData = new Command(RepopulateList);
kpiList.RefreshCommand = RefreshData;
kpiList.IsRefreshing = IsRefreshing;
{
void RepopulateList()
{
IsRefreshing = true;
Controller.KPIs.Clear();
foreach (KPIObj kpi in await
WebServices.GetUpdatedKPI(Controller.SavedKPIIds))
{
Controller.KPIs.Add(kpi);
}
IsRefreshing = false;
}
}
La chose étrange est que la première fois que je tire pour le rafraîchir fonctionne parfaitement bien. Mais la seconde fois que j'essaie, il n'entre jamais dans le bloc de code que la commande est définie. C'est presque comme si ListView "perd" le pointeur de la commande après le premier tirage à rafraichir.
(Désolé pour le porr anglais) Chaque appel à votre commande de rafraîchissement retourne une instance diferent de commandement, selon votre code. Je suppose que c'est l'erreur. Vous devriez retourner une seule instance ... Je vous suggère de changer votre définition de commande pour la définir comme une méthode séparée et de la définir sur le constructeur –
Pour être sûr de cela, entourez votre corps de méthode dans un bloc try et alertez l'exception . Je suppose que c'est une exception nulle part –
Merci pour la suggestion de Diego, j'ai essayé ce que vous pensiez et il semble que ça fasse toujours la même chose. Aucune erreur n'est levée. –