public SubjectsPageViewModel(IRegisteredSubjectService registeredSubjectService) { _registeredSubjectService = registeredSubjectService; _registeredSubjectService.RegisteredSubjectsChanged += _registeredSubjectService_RegisteredSubjectsChanged; AddAttendanceCommand = new RelayCommand(AddAttendanceOnClick); EditAttendanceCommand = new RelayCommand(EditAttendanceOnClick, p => SelectedAttendanceIndex > -1); DeleteAttendanceCommand = new RelayCommand(DeleteAttendanceOnClick, p => SelectedAttendanceIndex > -1); SelectedAttendanceIndex = -1; RegisteredSubjects = new ObservableCollection <RegisteredSubject>(); var currentDispatcher = Dispatcher.CurrentDispatcher; Task.Factory.StartNew(async() => { List <RegisteredSubject> registeredSubjects = await _registeredSubjectService.GetRegisteredSubjectsAsync(); registeredSubjects = new List <RegisteredSubject>(registeredSubjects.OrderBy(s => s.Term.Name)); currentDispatcher.Invoke(new Action(() => { RegisteredSubjects.AddRange(registeredSubjects); IsLoading = false; })); }); }
public CurriculumPageViewModel(ISubjectService subjectService, ITermService termService, IRegisteredSubjectService registeredSubjectService) { _subjectService = subjectService; _termService = termService; _registeredSubjectService = registeredSubjectService; NewSubjectCommand = new RelayCommand(NewSubjectOnClick); EditSubjectCommand = new RelayCommand(EditSubjectOnClick, p => SelectedSubjectIndex > -1); DeleteSubjectCommand = new RelayCommand(DeleteSubjectOnClick, p => SelectedSubjectIndex > -1); RegisterSubjectCommand = new RelayCommand(RegisterSubjectOnClick, p => SelectedSubjectIndex > -1); UnregisterSubjectCommand = new RelayCommand(UnregisterSubjectOnClick, p => SelectedSubjectIndex > -1); SelectedSubjectIndex = -1; Subjects = new ObservableCollection <Subject>(); var currentDispatcher = Dispatcher.CurrentDispatcher; Task.Factory.StartNew(async() => { List <Subject> subjects = await _subjectService.GetSubjectsAsync(); currentDispatcher.Invoke(new Action(() => { Subjects.AddRange(subjects); IsLoading = false; })); }); }