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

相关问题