IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

C# (& WPF) : application multipages, datagrid, selecteditem [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Par défaut C# (& WPF) : application multipages, datagrid, selecteditem
    Bonjour à tous,

    Nb : Je suis (très) débutant dans ce langage informatique.

    Je développe une application en C# et WPF ; dans celle-ci, j’ai une window, nommée « MainWindow », qui contient :
    - Un ribbon avec des boutons
    - Une frame, nommée « _Frame » qui navigue entre les pages de l’application.

    La page « Page_Contact » contient un datagrid, appelé "ContactDataGrid", qui affiche les divers contacts ; je souhaite permettre à l’utilisateur de modifier les contacts affichés. Pour ce faire, l'utilisateur sélectionne le contact dans le datagrid puis il clic sur le bouton approprié du ribbon.

    Dans le code behind de ma "MainWindow", j’ai donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void RibbonCommand_updateContact(System.Object sender, System.Windows.Input.ExecutedRoutedEventArgs e)
    {
    Page_Contact page = new Page_Contact();
    Contact selected = page.ContactDataGrid.SelectedItem as Contact; 
    if (selected == null)
    System.Windows.Forms.MessageBox.Show("Sélectionner un contact");
    else
                {
                Contact_Modifier formulaire = new Contact_Modifier(selected);
                formulaire.ShowDialog();
                }
    }
    J’ai une erreur : la selection est (malgré mes tentatives) toujours nulle !

    Par contre, j’ai prévu le double clic sur l’élément à modifier dans la datagrid et tout fonctionne parfaitement ; ce code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void ContactDataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
            {
                Contact selected = ContactDataGrid.SelectedItem as Contact; 
     
                if (selected == null)
                System.Windows.Forms.MessageBox.Show("Sélectionner un contact");
                else
                {
                Contact_Modifier formulaire = new Contact_Modifier(selected);
                formulaire.ShowDialog();
                }
            }
    J’ai cherché dans les divers forums mais je ne vois pas ce qui pose réellement problème (la frame, la navigation...); auriez-vous une idée ? Une méthode ? (ou une grosse erreur )

    D’avance merci,

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Il y a un truc bizarre dans RibbonCommand_updateContact, au début tu crée une page, puis tu vas chercher le selecteditem sur la datagrid de cette page. Mais si elle vient d'être crée, il n'y a probablement rien dans le datagrid.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Par défaut Re
    Donc, selon toi, le problème vient de ma ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Page_Contact page = new Page_Contact();
    Mais alors quel est le code pour "accéder" depuis la MainWindow au datagrid qui se trouve dans Page_Contact ?

    Bien à toi,

  4. #4
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    La tu instancies une nouvelle page. Tu dois plutôt avoir dans ton Mainwindow une référence vers ta page actuelle. Avec ça, tu peux avoir le selecteditem comme tu fais.
    Maintenant si ton appli commence à devenir complexe, je te conseille de regarder le pattern MVVM qui rendra les choses plus facile.(Il y a des tutos sur le site je pense)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Par défaut Re
    En fait, la MainWindow est une "fenêtre-mère" dans laquelle des pages défiles (une vingtaine) selon des évènements "button_clic"...

    Sur ton conseil, j'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public void RibbonCommand_updateFile(Page_Contact page)
    {
    Contactselected = page.ContactDataGrid.SelectedItem as Contact;
     
    // etc comme supra
     
    }
    Mais alors, j'ai le Ribbon qui se met en erreur; il exige les arguments "System.Object sender, System.Windows.Input.ExecutedRoutedEventArgs e"

    Donc, j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public void UpdateContact(Page_Contact page)
            {
                Contactselected = page.ContactDataGrid.SelectedItem as Contact;
     
    // etc...
     
                }
            }
    Et je demande au Ribbon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void RibbonCommand_updateFile(System.Object sender, System.Windows.Input.ExecutedRoutedEventArgs e)
            {
    UpdateContact()
    }
    Mais le ribbon refuréclame des arguments ?!?

  6. #6
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    La page Contact se trouve ou dans la MainWindow? Dans une NavigationWindow ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Redémarrage application multipage
    Par toubib dans le forum Windows Phone
    Réponses: 15
    Dernier message: 15/01/2012, 19h33
  2. Facebook application multipage
    Par Nalexx dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 21/11/2011, 14h09
  3. [WPF] Alimenter une DataGrid
    Par Babas007 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 26/11/2010, 15h31
  4. [WPF] Multiple Sélection DataGrid
    Par Pooch dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 27/07/2010, 11h36
  5. Gestion d'une application "multipage".
    Par berceker united dans le forum Flex
    Réponses: 15
    Dernier message: 12/08/2009, 17h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo