public void handleReply(string json) { if (json == null) { Deployment.Current.Dispatcher.BeginInvoke(() => { progressBar1.IsIndeterminate = false; MessageBox.Show("Unable to communicate with server."); }); return; } DataContractJsonSerializer dcjsSubject = new DataContractJsonSerializer(typeof(SubjectResponse)); SubjectResponse subject = dcjsSubject.ReadObject(new MemoryStream(Encoding.Unicode.GetBytes(json))) as SubjectResponse; Deployment.Current.Dispatcher.BeginInvoke(() => { tbObjectives.Text = subject.objectivos; tbContent.Text = subject.conteudo; TeachersViewModel tvm = new TeachersViewModel(); BiblioViewModel bvm = new BiblioViewModel(); GenericViewModel svm = new GenericViewModel(); List<string> teachers = new List<string>(); for (int i = 0; i < subject.ds.Length; ++i) { for (int j = 0; j < subject.ds[i].docentes.Length; ++j) { if (teachers.Contains(subject.ds[i].docentes[j].nome)) continue; teachers.Add(subject.ds[i].docentes[j].nome); tvm.Items.Add(new ItemViewModel() { extra = subject.ds[i].docentes[j].doc_codigo.ToString(), LineOne = subject.ds[i].docentes[j].nome, }); } } Deployment.Current.Dispatcher.BeginInvoke(() => { try { for (int i = 0; i < lbTeachers.Items.Count; ++i) TiltEffect.SetIsTiltEnabled(lbTeachers.ItemContainerGenerator.ContainerFromIndex(i), true); } catch { } // Not really important. }); lbTeachers.DataContext = tvm; if(subject.bibliografia != null) { for (int i = 0; i < subject.bibliografia.Length; ++i) { bvm.Items.Add(new ItemViewModel() { LineOne = subject.bibliografia[i].tipo_descr, LineTwo = (subject.bibliografia[i].autores != null ? subject.bibliografia[i].autores + "\n" : "") + (subject.bibliografia[i].titulo != null ? subject.bibliografia[i].titulo + "\n" : "") + (subject.bibliografia[i].isbn != null ? "ISBN: " + subject.bibliografia[i].isbn : ""), }); } lbBibliography.DataContext = bvm; } if (subject.software != null) { foreach (Software s in subject.software) { if (s.nome == "" && s.descricao != "") { s.nome = s.descricao; s.descricao = ""; } svm.Items.Add(new ItemViewModel() { LineOne = s.nome, LineTwo = s.descricao, }); } } else { svm.Items.Add(new ItemViewModel() { LineOne = "No data" }); } lbSoftware.DataContext = svm; tbMetodology.Text = subject.metodologia == null ? "No data" : subject.metodologia; tbExam.Text = subject.cond_frequencia == null ? "No data" : subject.cond_frequencia; tbFinalGrade.Text = subject.for_avaliacao == null ? "No data" : subject.for_avaliacao; lbTeachers.SelectionChanged += new SelectionChangedEventHandler(lbTeachers_SelectionChanged); progressBar1.IsIndeterminate = false; }); }
// Load data for the ViewModel Items private void CanteenPage_Loaded(object sender, RoutedEventArgs e) { for (int i = 0; i < GenericModels.Length; ++i) { if (GenericModels[i] == null) GenericModels[i] = new GenericViewModel(); if (!GenericModels[i].IsDataLoaded) GenericModels[i].LoadData(); } }