2017-06-19 178 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

相關問題