数据加载时显示进度条
问题描述:
我想在数据加载和数据加载时显示进度条我想隐藏进度条。数据加载时显示进度条
对于测试目的,我刚刚添加了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);
}
答
试试这个使用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));
}
你确定你已经绑定IsProgressVisible正常吗? –
查看我更新的问题 – hotspring
您确定从UI线程调用RefreshStudentList方法吗?你应该尝试封装你的“RaisePropertyChanged(()=> IsProgressVisible);”使用InvokeOnMainThread(()=> ...)调用; – hugoterelle