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

Windows Presentation Foundation Discussion :

[WPF] listbox et click sur item


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut [WPF] listbox et click sur item
    bonjour a tous,

    j'ai cherché en vain une propriété "clickitem" sur les listbox en wpf.

    en effet je veux créer un évènement lors du click sur un des items de la listbox, pour récupérer des données dans un datatable mais je n'ai pas réussi.

    j'ai donc utilisé la propriété "SelectionChanged", ce qui marche si on click a chaque fois sur un item différents mais par contre si je click deux fois d'affilé sur un même item et bien ça ne déclenche pas l'évènement (normal vu que la propiété "selectionChanged" n'est pas modifiée)

    Donc ma question est comment declencher un événement lors d'un click sur un item de la listbox pour s'affranchir de ce soucis?

    apprarement on peut faire quelque chose avec un EventSetter sur tous les ListBoxItem pour permettre un MouseLeftButtonDown sur les items, mais je n'ai rien compris.

    je suis debutant en wpf et je vois pas comment mettre cela en oeuvre...

    voici ma listbox:

    xaml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <ListBox
                Name="ListParam"
                HorizontalAlignment="Left" 
                Margin="35,96,0,140" 
                Width="266" 
                SelectionChanged="ListParam_SelectionChanged" 
     
                />
    remplissage de la listbox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void frmParam_load()
            {
                DB.DBDataSetTableAdapters.ParamDBTableAdapter ParamDBTableadapter = new ParamDBTableAdapter();
                ParamDB = ParamDBTableadapter.GetData();
                ListParam.ItemsSource = ParamDB;
                ListParam.DisplayMemberPath = "Nom_ParamDB";
    l'evenement ListParam_SelectionChanged
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    index = ListParam.SelectedIndex;
                if (index != -1)
                {
                    TxtboxParam.Text = ParamDB.Rows[index]["Nom_ParamDB"].ToString();
                    TxtboxAppliHit.Text = ParamDB.Rows[index]["AppliHit_ParamDB"].ToString();
                    TxtboxAppliAu.Text = ParamDB.Rows[index]["AppliAU_ParamDB"].ToString();
                    CbboxVR1.SelectedValue = ParamDB.Rows[index]["VR1_ParamDB"].ToString();
                    CbboxVR2.SelectedValue = ParamDB.Rows[index]["VR2_ParamDB"].ToString();
                }
                else
                {
                    TxtboxParam.Text = "";
                    TxtboxAppliHit.Text ="";
                    TxtboxAppliAu.Text = "";
                    CbboxVR1.SelectedValue = "";
                    CbboxVR2.SelectedValue = "";
                }
    merci et joyeux noel a tous

  2. #2
    Membre émérite Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Par défaut
    tu peux tres bien pour cela mettre l'evenement click sur le control de chaque item lui meme.

    dans ton datatemplate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Button MouseDoubleClick=".." />

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    salut,

    ben en fait j'ai trouvé ce tread: http://www.developpez.net/forums/d73...-item-listbox/

    j'ai donc essayé de la mettre a ma sauce, a savoir:

    xaml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     <ListBox
                Name="ListParam"
                HorizontalAlignment="Left" 
                Margin="35,96,0,140" 
                Width="266" 
                >
                <Style TargetType="{x:Type ListBoxItem}">
                    <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListBoxItem_PreviewMouseLeftButtonDown" />
                </Style>
            </ListBox>
    code behind:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    private void ListBoxItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                index = ListParam.SelectedIndex;
                if (index != -1)
                {
                    TxtboxParam.Text = ParamDB.Rows[index]["Nom_ParamDB"].ToString();
                    TxtboxAppliHit.Text = ParamDB.Rows[index]["AppliHit_ParamDB"].ToString();
                    TxtboxAppliAu.Text = ParamDB.Rows[index]["AppliAU_ParamDB"].ToString();
                    CbboxVR1.SelectedValue = ParamDB.Rows[index]["VR1_ParamDB"].ToString();
                    CbboxVR2.SelectedValue = ParamDB.Rows[index]["VR2_ParamDB"].ToString();
                }
                else
                {
                    TxtboxParam.Text = "";
                    TxtboxAppliHit.Text ="";
                    TxtboxAppliAu.Text = "";
                    CbboxVR1.SelectedValue = "";
                    CbboxVR2.SelectedValue = "";
                }
            }
    ca compile sans soucis mais des que je clique pour afficher la form contenant cette listbox j'ai l'erreur suivante:

    Impossible de créer une instance de 'frmParam' définie dans l'assembly 'AuCBmaker, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Une exception a été levée par la cible d'un appel. Erreur dans le fichier de balisage 'frmParam.xaml' ligne 2 position 5.
    pas compris d'ou venait de probleme

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Au moment où ce message arrive, essaies de regarder le détail de l'exception (il faut développer les InnerException). T'auras normalement un message plus explicite.

  5. #5
    Membre émérite Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Par défaut
    Je reeitere ma solution, quand on utilise wpf il faut penser wpf et plus window form.
    Wpf te donne la possibileter te creer un itemtemplate dedans tu met un boutton avec ton evenement click.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    bonjour,

    bon mon erreur viens de l'ajout de ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <Style TargetType="{x:Type ListBoxItem}">
                    <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListBoxItem_PreviewMouseLeftButtonDown" />
                </Style>
    et le message d'erreur dans InnerException est
    "La collection Items doit être vide pour pouvoir utiliser ItemsSource."
    pour zeavan, je comprends ce que tu veux dire mais je n'arrive pas a le mettre en place... tu aurais un exemple pour mon cas?

    merci

Discussions similaires

  1. double click sur item listView
    Par chlock62 dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 28/03/2014, 22h29
  2. Evènement click sur item menu non déclenché
    Par clem_alain dans le forum ASP.NET
    Réponses: 0
    Dernier message: 06/04/2013, 14h58
  3. ListBox avec CheckBox: click sur un item
    Par yonpo dans le forum Windows Presentation Foundation
    Réponses: 11
    Dernier message: 26/11/2010, 11h39
  4. Click sur un Item d'une ListBox
    Par Morgoth818 dans le forum Windows Presentation Foundation
    Réponses: 14
    Dernier message: 07/05/2009, 12h35
  5. recharger listbox apres click sur bouton
    Par tehes dans le forum ASP.NET
    Réponses: 4
    Dernier message: 22/01/2008, 15h27

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