/// <summary> /// Méthode servant à ouvrir la fenêtre pour modifier un participant /// </summary> private void miModifier_Click(object sender, RoutedEventArgs e) { // Le sender est le menu item MenuItem mi = sender as MenuItem; // On va chercher le parent du menu item (c'est donc un ContextMenu) ContextMenu cm = mi.Parent as ContextMenu; // Avec le context menu, on peut trouver la datagrid qui a "fabriqué" le context menu DataGrid dg = cm.PlacementTarget as DataGrid; // On peut ainsi aller chercher le joueur à modifier à partir de la datagrid (le SelectedItem) Joueur j = dg.SelectedItem as Joueur; // Le deuxième paramètre sert à passer la liste des joueurs (sauf le joueur courant) pour tester les cas d'unicité AjouterParticipant ap = new AjouterParticipant(j, (DataContext as Tournoi).LstJoueurs.Where(x => x != j).ToList()); ap.ShowDialog(); // Si on accepte la modification.. if (ap.LeJoueur != null) { // Trouver l'index de j int index = ((Tournoi)DataContext).LstJoueurs.IndexOf(j); // Modifier le joueur à cet index ((Tournoi)DataContext).LstJoueurs[index] = ap.LeJoueur; } }
/// <summary> /// Méthode servant à ouvrir la fenêtre pour ajouter un participant manuellement /// </summary> private void btnAddParticipant_Click(object sender, RoutedEventArgs e) { // Créer la fenêtre // Le deuxième paramètre sert à passer la liste des joueurs (sauf le joueur courant) pour tester les cas d'unicité AjouterParticipant ap = new AjouterParticipant((DataContext as Tournoi).LstJoueurs.ToList()); ap.ShowDialog(); if (ap.LeJoueur != null) { ((Tournoi)DataContext).LstJoueurs.Add(ap.LeJoueur); } }