2017-06-19 13 views
1

データのロード中に進行状況バーを表示しようとしていますが、データがロードされるとプログレスバーを非表示にします。データのロード中に進行状況バーを表示

試験目的の場合は、10秒追加したところで動作します。

private async Task ProgressBarAsync() 
{ 
    _isProgressVisible = true; 
    RaisePropertyChanged(() => IsProgressVisible); 

    await Task.Delay(TimeSpan.FromSeconds(10)).ConfigureAwait(false); 

    isProgressVisible = false; 
    RaisePropertyChanged(() => IsProgressVisible); 
} 

ただし、以下の実際のコードで、プログレスバーが表示されません。

private async Task RefreshStudentList() 
{ 
    //display progressbar 
    _isProgressVisible = true; 
    RaisePropertyChanged(() => IsProgressVisible); 

    // load data 
    var task = _studentService.GetStudentAsync(); 
    await task; 
    Students = new ObservableCollection<StudentViewModel>(task.Result.ConvertAll(x => new ClassViewModel(x))); 

    //hide progressbar 
    _isProgressVisible = false; 
    RaisePropertyChanged(() => IsProgressVisible); 
} 
+0

は、あなたが適切にIsProgressVisibleをバインドしましたか? –

+1

更新された質問を参照してください – hotspring

+0

UIスレッドからRefreshStudentListメソッドを呼び出してもよろしいですか?あなたの "RaisePropertyChanged(()=> IsProgressVisible)をカプセル化しようとする必要があります;" InvokeOnMainThread(()=> ...);で呼び出します。 – hugoterelle

答えて

0

InvokeOnMainThreadを使用して、これを試してみてください:

private async Task RefreshStudentList() 
{ 
    //display progressbar 
    _isProgressVisible = true; 
    InvokeOnMainThread(() => RaisePropertyChanged(() => IsProgressVisible)); 

    // load data 
    var data = await _studentService.GetStudentAsync(); 
    Students = new ObservableCollection<StudentViewModel> 
     (data.ConvertAll(x => new ClassViewModel(x))); 

    //hide progressbar 
    _isProgressVisible = false; 
    InvokeOnMainThread(() => RaisePropertyChanged(() => IsProgressVisible)); 
} 
+0

残念ながら、私はちょうど試したが、それは動作しません。 – hotspring

+0

編集したソリューションをお試しいただけますか? – hugoterelle

+0

まだ動作しません – hotspring

関連する問題