private async Task ExecuteLoadedAsync(object parameter) { User user = null; if (!IsOfflineMode) { user = await _usersRepository.GetAsync(nameof(Student), StudentId.ToString()); _applicationSettingsService.SaveLoggedUserDataInRegistry(nameof(Student), user as Student); } else { user = _applicationSettingsService.GetLoggedUserDataFromRegistry(nameof(Student)); if (user == null) { return; } } Student student = user as Student; if (!String.IsNullOrWhiteSpace(student.SerializedGrades)) { student.Grades = JsonConvert.DeserializeObject <Dictionary <string, List <Grade> > >(student.SerializedGrades); var subjects = new ObservableCollection <WrappedSubject>(); foreach (var subjectName in student.Grades.Keys) { var wrappedGrades = new ObservableCollection <WrappedGrade>(); var grades = student.Grades[subjectName]; if (grades.Count > 0) { double sum = 0; foreach (var grade in grades) { wrappedGrades.Add(new WrappedGrade { Value = grade.Value, Comment = grade.Comment, LastModificationDate = grade.LastModificationDate }); sum += grade.Value; } double average = sum / grades.Count; var subject = new WrappedSubject { Name = subjectName, Grades = wrappedGrades, Average = String.Format("{0:0.00}", average) }; subjects.Add(subject); } } Subjects = subjects; OnPropertyChanged(nameof(Subjects)); } }