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

Silverlight Discussion :

Selected All checkbox


Sujet :

Silverlight

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 9
    Points
    9
    Par défaut Selected All checkbox
    Bonjour à tous,
    J'ai une listBox ,dedans j'ai un checkbox.le mode de fonctionnement comme suit lorsque je sélectionne une ligne de la listbox le checkbox est coché et vis-versa.
    Je veux mettre un checkbox au dessus de la listbox lorsque je coche ce checkbox les checkbox seront cochés et les lignes de la listbox seront selectionné comment je pourrais faire ?
    voici le code que j'ai utilisé:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <StackPanel>
    <CheckBox  x:Name="SelectedAll"/>
    <ListBox x:Name="CheckBoxListBox" Margin="16,8,16,16" ItemsSource="{Binding Collection}" Grid.Row="1"  HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" SelectionMode="Extended">
    <ListBox.ItemTemplate>
    <DataTemplate>
    <StackPanel>
    <TextBlock Text ="{Binding code}" />
    <CheckBox IsChecked ="{Binding IsSelected ,Mode = TwoWay ,RelativeSource ={RelativeSource TemplatedParent}}"/>
    </StackPanel>
    </DataTemplate>
    </ListBox.ItemTemplate>
    </ListBox>
    <StackPanel>

    merci pour votre aide

  2. #2
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    Soit tu "check" les contrôles en parcourant ton arborescence de la liste.

    Soit avec une requete linq toute simple, tu "check" tes entités.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Collection.ForEach(e => e.IsSelected = true);

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Est ce que vous pouvez mieux expliquer j'essayer avec votre démarche mais ne marche pas, je travaille avec silverlight 4 .
    merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par MahdiSeg Voir le message
    Est ce que vous pouvez mieux expliquer j'essayer avec votre démarche mais ne marche pas, je travaille avec silverlight 4 .
    merci
    Tu rajoutes une commande sur la CheckBox principale "SelectedAll".

    Sur cette commande, tu passes en revue tous les éléments de ta collection et tu met la propriété IsSelected à true (ou false selon le cas).

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Est ce que vous pouvez me donner le code de la commande sur le checkbox?
    quel Collection?
    merci

  6. #6
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    Citation Envoyé par MahdiSeg Voir le message
    Est ce que vous pouvez me donner le code de la commande sur le checkbox?
    quel Collection?
    merci


    De Ton poste je lis :

    <ListBox x:Name="CheckBoxListBox" Margin="16,8,16,16" ItemsSource="{Binding Collection}" Grid.Row="1" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" SelectionMode="Extended">
    Ensuite comme la fait remarqué Hathortos, tu créé un bouton...tu l'appel Select All...sur le OnClick tu fais la requete linq que je t'ai écris...Bien sur elle n'est pas 100% top top je pense(au niveau focntionnel)...

    bref just do it!!!!!!!!!!

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    mon but est que lorsque je coche le checkbox selecteAll au dessus de la listbox
    les checkbox ds la liste seront cochées.
    je fait
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <Checkbox IsChecked="{Binding IsChecked ,ElementName=SelectedAll}"/>
    mais la selection de la ligne ne marche pas .moi je veux le deux ..

  8. #8
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Alors deja cette ligne est fausse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "{Binding IsSelected ,Mode = TwoWay ,RelativeSource ={RelativeSource TemplatedParent}}"
    Il faut enlever ton RelativeSource.

    Ensuite sur le Check de ta CheckBox qui coche tout il faut que tu prennes ta collection (celle qui vient de ta ligne de {Binding Collection}). Tu parcours toute la liste et tu mets la propriete IsSelected de chaque element a true. Si ta classe implement INotifyPropertyChanged ca devrait fonctionner.

  9. #9
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    Pour faire suite à l'explication de Sky, il est important de comprendre qu'il vaut mieux manipuler les données plutot que les controles. C'est plus facile et cela fédère l'endroit ou les données sont modifiées.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    J'ai trouvé la solution ,j'ai ajouté deux evenement pour le controle checkbox "selectedAll" et dans le code behin de la page j'ai l'implementé comme suit:


    le code xaml:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <StackPanel>
    <CheckBox  x:Name="SelectedAll" Checked="SelectedAll_Checked" Unchecked="SelectAll_UnChecked" />
    <ListBox x:Name="CheckBoxListBox" Margin="16,8,16,16" ItemsSource="{Binding Collection}" Grid.Row="1"  HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" SelectionMode="Extended">
    <ListBox.ItemTemplate>
    <DataTemplate>
    <StackPanel>
    <TextBlock Text ="{Binding code}" />
    <CheckBox IsChecked ="{Binding IsSelected ,Mode = TwoWay ,RelativeSource ={RelativeSource TemplatedParent}}"/>
    </StackPanel>
    </DataTemplate>
    </ListBox.ItemTemplate>
    </ListBox>
    <StackPanel>
    code behind:
    Code c# : 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
    private void SelectAll_UnChecked(object sender, RoutedEventArgs e)
            {
                var check = lstSociete.GetChildrenOfType<CheckBox>();
                foreach (var item in check)
                {
                    item.IsChecked = false;
                }
            }
     
            private void SelectedAll_Checked(object sender, RoutedEventArgs e)
            {
     
                var check = lstSociete.GetChildrenOfType<CheckBox>();
                foreach (var item in check)
                {
                    item.IsChecked = true;
                }
     
            }

    pour la methode d'extension GetChildrenOfType voici le code :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static IEnumerable<T> GetChildrenOfType<T>(this UIElement element)
              where T : UIElement
            {
                int count = VisualTreeHelper.GetChildrenCount(element);
                for (int i = 0; i < count; i++)
                {
                    FrameworkElement child = (FrameworkElement)VisualTreeHelper.GetChild(element, i);
                    if (typeof(T).IsAssignableFrom(child.GetType()))
                        yield return child as T;
     
                    foreach (var frameworkElement in GetChildrenOfType<T>(child))
                        yield return frameworkElement;
                }
            }



    merci

  11. #11
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    Comme la fait remarquer Samuel Blanchard, tu as choisi la mauvaise solution. Cela marche, mais c'est la pire.

    La tu mes à jours les éléments d'UI, alors que tu mettrais à jour les données, cela serait beaucoup plus simple, plus rapide, etc...

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    C'est dommage ,la méthode GetChildreOfType récupère seulement le 9 premier élément
    quelqu'un m'aider..

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par MahdiSeg Voir le message
    C'est dommage ,la méthode GetChildreOfType récupère seulement le 9 premier élément
    quelqu'un m'aider..
    N'utilises pas cette méthode lol

    Comme te l'ont déjà dis certains avant, tu as choisi la solution la moins bonne. Tu modifies directement les contrôles au lieu de modifier les données.

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Mon but est de modifier les controls, je veux que tous les checkbox ds la listBox soient cochés lors de checked de la selectedAll
    si vous avez unz solution bien detaillé vous pouver me donner
    merci

  15. #15
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Je t'ai donne une solution détaillée...

    Bon après j'ai pas donné de code, mais bon on est pas la pour ça hein

  16. #16
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    En fait tu n'a pas compris ton but.

    TU DOIS modifier tes données. Avec le mode=TwoWay, les controles vont se mettre à jour tout seul via les NotifyProperty.


    c'est un besoin très simple pourtant ce que tu demande, faut que tu accepte de changer de vision

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

Discussions similaires

  1. [Débutant] CheckBox ListView Select All
    Par khadime27 dans le forum C#
    Réponses: 3
    Dernier message: 22/10/2012, 13h53
  2. [IceFaces] Select All checkbox
    Par pmartin8 dans le forum JSF
    Réponses: 3
    Dernier message: 15/05/2012, 16h22
  3. Checkbox mailto et select all
    Par philiblues18 dans le forum jQuery
    Réponses: 0
    Dernier message: 11/04/2012, 11h55
  4. select all checkbox
    Par ekremyilmaz dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/07/2010, 16h21
  5. Select ALL Sauf ...
    Par Le Serval dans le forum Langage SQL
    Réponses: 14
    Dernier message: 29/04/2006, 21h02

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