Partage
  • Partager sur Facebook
  • Partager sur Twitter

WPF - Cocher toutes les checkbox

    20 septembre 2017 à 10:56:37

    Bonjour

    Je souhaite cocher avec un bouton toutes les checkboxes de ma form.

    Je ne connais pas les checkboxes à l'avance, elles sont le résultat d'une requête SQL.

    Tous les contenus des checkboxes sont dans cette liste :

    public ObservableCollection<CL_Lignes> lstLignes = new ObservableCollection<CL_Lignes>();


    Ce résultat est envoyé dans ma form avec le binding :

     <ItemsControl x:Name="lvDataBinding" HorizontalContentAlignment="Stretch" BorderThickness="0" Margin="10" Grid.Row="1" Background="{x:Null}" ItemsSource="{Binding}" Grid.ColumnSpan="4" Foreground="White">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Border BorderBrush="White" BorderThickness="1" CornerRadius="3" Margin="0,3" Grid.ColumnSpan="0" Background="Transparent" HorizontalAlignment="Left" VerticalAlignment="Top">
                            <StackPanel Orientation="Vertical" >
                                <CheckBox x:Name="cbxLignes" Tag="{Binding strCodeLigne}" Style="{StaticResource {x:Type ToggleButton}}" Content="{Binding strCodeLigne}" FontSize="22" Margin="25,15,25,15" Width="100" Height="45" IsChecked="{Binding IsChecked}" Checked="cbxLignes_Checked" Unchecked="cbxLignes_Unchecked" />
                            </StackPanel>
                        </Border>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <WrapPanel />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>


    Je souhaite avec un bouton bouler sur toutes les checkbox qui ont été crées pour les cocher 

    J'essaie de boucler sur ma liste pour récupérer les contenus et réussir à les cocher mais apparemment en vain, mauvaise méthode.

    Merci.

    -
    Edité par Fellerson 20 septembre 2017 à 10:57:35

    • Partager sur Facebook
    • Partager sur Twitter
      26 septembre 2017 à 23:35:58

      Boucler sur tous les éléments de lstLignes et assigner leur propriété IsChecked à true ou false au besoin; Exactement ce que tu penses être la mauvaise méthode, qui est pourtant une bonne ^^

      Si ça ne donne pas ce que tu veux, c'est que :

      • Tu n'implémente pas INotifyPropertyChanged sur la classe CL_Lignes, ce qui l'empêche de notifier des changements qui surviennent sur ses données.
      • Tu sur-écrase le comportement naturel du binding dans l'une ou l'autre des méthodes surveillante les événements Checked/Unchecked.

      Autre détail : La propriété Tag n'a pas besoin d'etre assignée avec un binding. Ce n'est pas comme ça que ça se fait en MVVM. Normalement, dans ce pattern, le métier peut potentiellement faire sa vie tout seul...Là, cette assignation sous-entend que, quelque part dans ton code métier, tu as un truc qui dépend de ce qui se trouve dans Tag...Donc qui dépend de la vue...Et c'est pas bon.

      • Partager sur Facebook
      • Partager sur Twitter

      WPF - Cocher toutes les checkbox

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown