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 C#] Checkbox dans listview


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Points : 22
    Points
    22
    Par défaut [WPF C#] Checkbox dans listview
    Bonjour à tous,

    J'ai trouvé de nombreux sujets sur ce thème mais je n'arrive pas à trouver la solution à mon problème.

    J'ai besoin de faire 2 choses :
    1) si je coche une case(chbxTousTypeArt), ça me coche toutes les cases de mon listview
    2) récupérer la colonne ID des cases cochées du listview

    Code XAML :
    Code xaml : 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
     
         <ListView Name="ListTypeArtExport" Canvas.Top="50" Canvas.Left="20" MaxHeight="600" Margin="10,10,10,10" MinWidth="200" MaxWidth="500"
                    ItemsSource="{Binding}" VerticalAlignment="Top">
     
                    <ListView.View>
                        <GridView>
                            <GridViewColumn Width="200" Header="Nom">
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>            
                                            <CheckBox Name="chbxArticle" IsChecked="{Binding IsChecked}" VerticalAlignment="Center" Content="{Binding Path=Nom}" />
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                            <GridViewColumn Header ="ID" DisplayMemberBinding="{Binding Path=IDTypeArticle}" Width="50" /> 
                        </GridView>
                    </ListView.View>
                </ListView>
     
         <CheckBox Canvas.Bottom="20" Canvas.Left="20" Name="chbxTousTypeArt" IsChecked="False" VerticalAlignment="Center" 
                          Content="Tous les articles" Checked="Check_ExportTsArticle" />

    Pour la question 1, j'étais parti sur ça mais je n'arrive pas à le mettre en application (ça doit pas correspondre avec mon xaml? La propriété Checked n'existe pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach (ListViewItem lvi in ListTypeArtExport.Items)
    {
         lvi.Checked = true;
    Pouvez-vous me guider dans mes recherches s'il vous plait?

    Merci beaucoup pour votre aide précieuse pour le débutant que je suis et bonne journée.

  2. #2
    Membre éprouvé Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Points : 998
    Points
    998
    Par défaut
    Hello,

    Les éléments de la liste que tu as bindé ont leurs propriétés "IsChecked" mise à jour cela devrait te permettre de retrouver les lignes cochées non ?

    La colonne ID correspond au numéro de colonne ou a une propriété de l'élément ?

    ++
    Jonathan ANTOINE - Découvrez mon livre: MVVM, de la découverte à la maîtrise.

    Microsoft MVP Client Application Development
    - MCPD Windows 4.0, etc.
    Mon blog : http://www.jonathanantoine.com

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    ID correspond à une propriété de l'élément (différent sur chaque ligne).

    En fait j'ai mis IsChecked="{Binding IsChecked}" mais je ne sais pas si je dois? Au début, j'avais mis IsChecked = "False" mais en lisant les différents forums j'ai vu que ça ne pouvait pas fonctionner parce que ça retournerai toujours faux.
    Mais ce que je ne comprend pas c'est que pour les autres Binding j'ai un dataContext (qui découle de ma BD) mais pour la case à cocher non...
    Donc je ne sais pas pourquoi j'ai mis ça et comment ça peut fonctionner?

    Je suis vraiment perdu, désolé.
    Comment est-ce que je peux retrouver les lignes cochées?

    Merci pour ton aide.

  4. #4
    Membre éprouvé Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Points : 947
    Points
    947
    Par défaut
    Salut,

    Tu bindes une collection au ListView?

    Autrement, ce précédent post pourra peut-être te guider... : http://www.developpez.net/forums/d10...ox-click-item/

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Je binde une datatable au listview (ou je récupère le nom du type et l'ID de ce type).
    En aucun cas je ne récupère une valeur pour les checkbox puisque à l'ouverture de cette fenêtre aucune case n'est cochée par défaut et c'est le client qui doit cocher certaines cases ensuite (ou toutes).

    Si je ne me trompe pas, je ne peux pas faire de listbox vu que j'ai 2 colonnes (checkbox + nom et ID), non?

    J'aurai du prendre le problème en 2 temps, désolé.
    Comment en cochant la case 'chbxTousTypeArt' (case qui ne fait pas parti du listview) je peux cocher automatiquement toutes les cases de mon listview?

    Merci encore.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    J'ai passé ma journée dessus, sans succès...
    (pas facile de débuter)

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private void Check_ExportTsArticle(object sender, RoutedEventArgs e)
            {
                //sélectionne les lignes (mais ne coche pas les checkbox)
                //ListTypeArtExport.SelectAll();
                
                //si on met une autre checkbox en dehors du listview
                //test.IsChecked = true;
                
                //ce que j'aimerai arriver à faire.... mais comment avoir la propriété IsChecked???
                for (int i = 0; i < ListTypeArtExport.Items.Count; i++)
                {
                    //ListTypeArtExport.Items[i].IsChecked = true;
                }


    J'ai bien compris que dans le XAML je dois écrire ça :
    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <CheckBox Name="chbxArticle" VerticalAlignment="Center" Content="{Binding Path=Nom}" Checked="CheckBox_Checked" 
               IsChecked="{Binding Path=IsSelected, 
               RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"/>

    Mais quel code behind je dois mettre pour faire la liaison???
    D'avance, merci.

  7. #7
    Membre éprouvé Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Points : 947
    Points
    947
    Par défaut
    D'après le lien ci-dessus, un item sélectionné provoque le "cochage"() du checkbox.
    Essaye de remplacer le code xaml actuel par celui cité dans le lien.

    Bon courage

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    En fait c'est bien ça.
    Ça ne marchait pas puisque j'avais ma ligne "//ListTypeArtExport.SelectAll();" en commentaire...
    Merci pour votre aide à tous et bonne journée.

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

Discussions similaires

  1. checkbox dans Listview
    Par CLion dans le forum C#
    Réponses: 1
    Dernier message: 18/09/2014, 00h28
  2. Problème checkbox dans listview
    Par Antri dans le forum ASP.NET
    Réponses: 5
    Dernier message: 04/05/2012, 21h34
  3. checkbox dans colonne de listview
    Par youn1096 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/09/2008, 06h49
  4. [WPF][C#] combobox dans listview
    Par azerty53 dans le forum C#
    Réponses: 7
    Dernier message: 24/01/2008, 14h32
  5. Comment savoir si dans Listview Checkbox est coché
    Par Ardely dans le forum Delphi
    Réponses: 8
    Dernier message: 16/01/2007, 10h51

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