private void ClosePatient(MainWindow mainWindow, MainViewModel mainViewModel, int tabId = 0) { TabControl tabControl = mainWindow.mainPanel.Children[0] as TabControl; TabItem itemToClose = null; foreach (var item in tabControl.Items) { var tabItem = item as TabItem; if (tabId != 0) { if (tabId == (int)tabItem.Tag) { itemToClose = tabItem; break; } } else if (tabItem.IsFocused) { itemToClose = tabItem; break; } } if (itemToClose != null) { tabControl.Items.Remove(itemToClose); mainViewModel.TotalPatientInWorkSpace--; } }
private void Application_Startup(object sender, StartupEventArgs e) { try { // open the Users screen MainWindow mainWindow = new MainWindow(); MainViewModel mainviewModel = new MainViewModel(); PatientListView patientView = null; string themeName = "Green";//default theme if (System.IO.File.Exists(APP_SETTING_PATH)) { var applicationThemeSetting = File.ReadAllText("PatientCARE_TEST_THEME.txt"); applicationThemeSetting = applicationThemeSetting.Replace(System.Environment.NewLine, ""); var listTheme = new string[] { "White", "Green", "Red", "Blue" }; foreach (var item in listTheme) { if (applicationThemeSetting.ToUpper() == item.ToUpper()) { themeName = item; _settingTheme = themeName; break; } } } // Loading theme LoadTheme(themeName); mainviewModel.ThemeChangeEvent += (changeTheme) => { LoadTheme(changeTheme); }; mainviewModel.NewPateintEvent += (patientId) => { LoadPatient(patientId, mainWindow, mainviewModel); }; mainviewModel.ClosePateintEvent += () => { ClosePatient(mainWindow, mainviewModel); }; mainviewModel.ShowPateintListScreenAction += () => { try { // ensure only one view is loaded, and the same one remains open for multiple requests patientView = patientView ?? new PatientListView(); if (!patientView.IsLoaded) { var patientListViewModel = new PatientListViewModel(); patientView.Close(); patientView = new PatientListView(); patientListViewModel.ClosePateintListScreenAction += () => { patientView.Close(); }; patientListViewModel.PatientSelectedAction += () => { LoadPatient(patientListViewModel.SelectedPatient.PatientId, mainWindow, mainviewModel); patientView.Close(); }; patientView.DataContext = patientListViewModel; } patientView.ShowDialog(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error"); Application.Current.Shutdown(); } }; var loginView = new LoginView(); var loginViewModel = new ViewModel.LoginViewModel(); loginViewModel.LoginEvent += () => { loginView.Close(); TabControl addTabControl = new TabControl(); addTabControl.Name = "tcMain"; addTabControl.BorderThickness = new Thickness(0); mainWindow.mainPanel.Children.Add(addTabControl); mainWindow.DataContext = mainviewModel; mainWindow.Show(); }; loginViewModel.CancelLoginEvent += () => { App.Current.Shutdown(); }; loginView.DataContext = loginViewModel; loginView.Closed += new EventHandler(loginView_Closed); loginView.ShowDialog(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error"); Application.Current.Shutdown(); } }
private void LoadPatient(int patientId, MainWindow mainWindow, MainViewModel mainViewModel) { TabControl tabControl = mainWindow.mainPanel.Children[0] as TabControl; foreach (var item in tabControl.Items) { var tabItem = item as TabItem; var patientViewExist = tabItem.Content as PatientView; var PatientViewModel = patientViewExist.DataContext as PatientViewModel; if (PatientViewModel.PatientInfo.PatientId == patientId) { tabItem.IsSelected = true; return; } } PatientViewModel patientViewModel = new PatientViewModel(patientId); var patientView = new PatientView(); var patientInTab = new TabItem(); patientInTab.Header = patientId == 0 ? "Patient ID:NewId()" : "Patient ID:" + patientId.ToString(); patientView.DataContext = patientViewModel; patientInTab.Content = patientView; tabControl.Items.Add(patientInTab); patientInTab.IsSelected = true; mainViewModel.TotalPatientInWorkSpace++; var tabId = mainViewModel.TotalPatientInWorkSpace; patientInTab.Tag = mainViewModel.TotalPatientInWorkSpace; patientViewModel.PatientInfo.SaveAndNextTabAction += () => { var tabItem = (TabItem)patientView.tabPatient.Items[1]; tabItem.IsEnabled = true; tabItem.Focus(); tabItem.IsEnabled = false; }; patientViewModel.PatientAddressInfo.SaveAndNextTabAction += () => { var tabItem = (TabItem)patientView.tabPatient.Items[0]; tabItem.IsEnabled = true; tabItem.Focus(); tabItem.IsEnabled = false; }; patientViewModel.PatientInfo.ShowDoctorScreen += () => { LoadDoctorScreen(patientViewModel.PatientInfo.DoctorListViewModel); }; patientViewModel.ClosePateintEvent += () => { ClosePatient(mainWindow, mainViewModel, tabId); }; }