2017-01-04 8 views
0

ListViewのRefreshCommandにブレークポイントを設定すると、コンストラクタの最初の行の直後に呼び出されます。私は自分でそれを求めていません。 ListViewは目的に応じてこれを行いますか?作成時にListViewのRefreshCommandが呼び出されていますか?

RefreshCommandが呼び出された後、リフレッシュ関数が呼び出され、成功/失敗したデリゲートが呼び出されます。 succesデリゲートは右後で呼び出され、ListViewのIsRefreshingプロパティをfalseに設定します。私のリストビューは、しかし、リフレッシュを停止することはありません。

コードは、同じページクラス内のすべて:誰もが同様にこの答えを探している場合

public somePage(){ 
    list = new ListView(){ 
     ItemsSource = someSource, 
     IsPullToRefreshEnabled = true, 
    } 
    list.RefreshCommand = new Command(async() => 
    { 
     await Task.Run(() => refreshThread()); 
    }); 
} 

private task refreshThread(){ 
    Succes succesCallBack = new Succes(onSucces); 
    failedCallBack = new Failure(onFailed); 
    refresh(succesCallBack, failedCallBack); 
} 

private void onSucces(dynamic result){ 
    //code to add//remove data from listview    
    list.IsRefreshing = false; 
} 

private void onFailed(string message){ 
    DisplayAlert("Alert", message, "ok"); 
    list.IsRefreshing = false; 
} 
+0

オープンソースなので、[自分で確認する](https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Core/ListView.cs)はなぜですか?それはそれのようには見えません。ブレークポイントはどこに置いていますか?あなたが 'await Task.Run(()=> refreshThread());を実行すると、' list.RefreshCommand = new Command(async()=> ') –

+0

@Geralt Versluis私のブレークポイントは、refesh関数自体とonSucces onFailedメソッドにあります。ListView isRefreshingプロパティはfalseに設定され、それらのブレークポイントも設定されますが、リストビューはリフレッシュしません。それをリフレッシュしようとしました。 – wasted

答えて

0

、私にとっての問題は、async/awaitの誤った使用でした。

関連する問題