2016-08-14 4 views
0

IsRefreshingがviewmodelのIsBusyプロパティにバインドされている場合に、リフレッシュを有効にするリストビューがあります。コマンドが開始されるとIsBusyはtrueに変更され、終了または失敗するとfalseに設定されます。問題は、ユーザーがコマンドを2回以上実行した場合です。最初のタスクが完了すると、IsBusyがfalseに設定され、リストビューのアクティビティインジケータが非表示になります。ただし、2番目のタスクはまだ実行されています。すべてのタスクが完了するまで、IsBusyをfalseに設定したくありません。どうすればこれを達成できますか?並行タスクが実行されたときのリストビューのIsRefreshingの処理

EDIT:

enter image description here

UIは、上記の制御を細分化し、各制御コマンドを呼び出します。

+1

'if(IsBusy)return;'? –

答えて

0

@Gerald氏によると、ビューモデル内のコマンドでは、IsBusyをtrueに設定する前に、最初に真でないかどうかを確認してください。 trueに設定されていない場合は、それ以外の場合は

private void DoCommand() 
{ 
If (IsBusy) return; 
IsBusy = true; 
    // rest of you code here 
    // IsBusy = false; 
} 
+0

問題はUIです。セグメント化されたコントロールがあり、それぞれがコマンドを呼び出します。したがって、ユーザーがコントロール2を押してIsBusyがtrueの場合、コントロール2が選択されますが、リストビューには異なるデータが表示されます。 – danieljohngomez

+0

はUIのスクリーンショットを追加しました – danieljohngomez

+0

私はあなたがリフレッシュするときにコマンドが呼び出されたと思いました。あなたのUIに応じて説明できますか? – BraveHeart

関連する問題