private void CboRecherche_KeyUp(object sender, KeyEventArgs e)
        {
            ControlModelListePatient controlModelListePatient = (ControlModelListePatient)DataContext;
            string texteRecherche = cboRecherche.Text;

            if (e.Key == Key.Enter)
            {
                // On ajoute dans une liste temporaire les patients trouvés dans la liste des patients.
                List <Citoyen> LstCitoyenTrouve = LstCitoyenRecherche.FindAll((patient) => patient.Nom.IndexOf(cboRecherche.Text) != -1);

                // On vide la liste bindée avec la combobox
                controlModelListePatient.Citoyens.Clear();

                // On doit remettre le texte dans le combobox, car le clear précédent détruit le texte inscrit par l'utilisateur
                cboRecherche.Text = texteRecherche;

                // Finalement, on copie tous les patients trouvés dans la liste installée dans le DataContext.
                LstCitoyenTrouve.ForEach((patient) => controlModelListePatient.Citoyens.Add(patient));
            }
            else if (cboRecherche.Text == "") // Si la barre de recherche est vide, on remet tous les patients. Sinon, on vide la liste pour préparer la recherche.
            {
                // On vide la liste bindée avec la combobox
                controlModelListePatient.Citoyens.Clear();
                LstCitoyenRecherche.ForEach((patient) => controlModelListePatient.Citoyens.Add(patient));
            }
        }
        /// <summary>
        /// C'est cette fonction qui effectue une requête à la bd pour prendre les citoyens.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CboProfessionnel_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ControlModelListePatient controlModelListePatient = (ControlModelListePatient)DataContext;

            // la fonction clear dans la fonction CboDepartements_SelectionChanged déclenche un selectionChanged
            // dans le cboProfessionnel lorsque son contenu est vide. Donc, il fait planté la requête ici.
            if (controlModelListePatient.Employes.Count != 0)
            {
                List <Citoyen> lstPatients            = new List <Citoyen>();
                Employe        employeSelectionne     = (Employe)cboProfessionnel.SelectedItem;
                Departement    departementSelectionne = (Departement)cboDepartements.SelectedItem;

                if (employeSelectionne.Nom == "Tous" && departementSelectionne.Nom == "Tous")
                {
                    lstPatients = Data.DataModelCitoyen.GetCitoyens();
                }
                else if (employeSelectionne.Nom == "Tous")
                {
                    lstPatients = Data.DataModelCitoyen.GetTousCitoyensDepartement((Departement)cboDepartements.SelectedItem);
                }
                else
                {
                    lstPatients = Data.DataModelCitoyen.GetCitoyensLstPatient(employeSelectionne);
                }


                controlModelListePatient.Citoyens.Clear();
                lstPatients.ForEach(patient => controlModelListePatient.Citoyens.Add(patient));
                // Pour la barre de recherche
                LstCitoyenRecherche = lstPatients;
            }
        }
        private void CboDepartements_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            // On va chercher le contenu du DataContext pour modifier directement les valeurs
            ControlModelListePatient controlModelListePatient = (ControlModelListePatient)DataContext;

            // On met temporairement la nouvelle liste d'employés du département sélectionné dans une liste
            List <Employe> lstEmploye = Data.DataModelEmploye.GetLstEmployesDepartement((Departement)cboDepartements.SelectedItem);

            // On vide la liste dans le datacontext
            controlModelListePatient.Employes.Clear();
            // On ajoute les nouveaux employés dans le datacontext
            lstEmploye.Add(new Employe {
                Nom = "Tous"
            });
            // On met le critère Tous lorsque le département est changé.
            cboProfessionnel.SelectedItem = lstEmploye.Find((employe) => employe.Nom == "Tous");
            lstEmploye.ForEach(employe => controlModelListePatient.Employes.Add(employe));
        }
        public ControlListePatient(GestionnaireEcrans gestionnaireEcrans, ObservableCollection <Departement> departements, ObservableCollection <Employe> employes, Departement departement, Employe employe)
        {
            InitializeComponent();
            GestionnaireEcrans = gestionnaireEcrans;
            ControlModelListePatient controlModelListePatient = new ControlModelListePatient(gestionnaireEcrans, departement.EstNull() ? new ObservableCollection <Citoyen>(DataModelCitoyen.GetCitoyens()) : new ObservableCollection <Citoyen>(DataModelCitoyen.GetCitoyensLstPatient(employe)), departements, employes);

            // On met dans le datacontexte les infos qui seront liées dans le UserControl
            DataContext = controlModelListePatient;

            // Permet de sélectionner par défaut le département du professionnel dans la combobox
            // Je dois créer mes combobox avant de les mettre dans mon stackpanel puisque l'event selectedchange
            // s'enclenchait au démarrage et fait planter l'application à cause de mon système par défaut.
            initialiserCboDepartement(departements, departement.EstNull() ? new Departement {
                Nom = "Tous"
            } : departement);

            // Ensuite, il faut afficher dans le cboProfessionnel le professionnel par défaut
            initialiserCboProfessionnel(employes, employe, departement);

            // Pour la barre de recherche
            LstCitoyenRecherche = controlModelListePatient.Citoyens.ToList <Citoyen>();
        }