Reputation: 16813
I am trying to display a progress bar while data is loading and once data is loaded I want to hide the progress bar.
For the testing purpose, I have just added 10 seconds and it works.
private async Task ProgressBarAsync()
{
_isProgressVisible = true;
RaisePropertyChanged(() => IsProgressVisible);
await Task.Delay(TimeSpan.FromSeconds(10)).ConfigureAwait(false);
isProgressVisible = false;
RaisePropertyChanged(() => IsProgressVisible);
}
However, in the following actual code, does not show progress bar.
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);
}
Upvotes: 0
Views: 796
Reputation: 1859
Try this using 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));
}
Upvotes: 0