vendredi 29 avril 2016

Checkboxes in listbox not getting checked via binding

I'm trying to check all the checkboxes through a binding. The getChecked property does get changed to true after clicking the button but the checkboxes are just not getting checked. Does someone see what I'm doing wrong here? This is the XAML code for the listbox.

<ListBox Name="scroll"  ItemContainerStyle ="{StaticResource _ListBoxItemStyle}" Tag="{Binding SortingIndex}"  BorderBrush="#C62828" BorderThickness="1" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Stretch"  VerticalAlignment="Stretch" >
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Name="checkboxStack">
                        <CheckBox IsChecked="{Binding Path=getChecked}"  Content="{Binding Path=vraag}"  Style="{StaticResource LifesaversCheckBoxesA}"/>
                        <StackPanel Margin="20,0,0,0">
                            <RadioButton GroupName="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ListBox}, Path=Tag}" Content="{Binding Path=antwoorden[0]}" FontSize="15" />
                            <RadioButton GroupName="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ListBox}, Path=Tag}" Content="{Binding Path=antwoorden[1]}" FontSize="15" />
                            <RadioButton GroupName="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ListBox}, Path=Tag}" Content="{Binding Path=antwoorden[2]}" FontSize="15" />
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

This is the event handler for the button I made to change the getChecked boolean to true for each vraag in vragenLijst. The sample data is just to generate some random strings.

public partial class LivesaversWindow : UserControl
{
    ObservableCollection<Vraag> vragenLijst;
    public LivesaversWindow()
    {
        InitializeComponent();
        vragenLijst = new VragenList(SampleData.vragen());

        scroll.ItemsSource = vragenLijst;

    }

    private void alles_Selecteren(object sender, RoutedEventArgs e)
    {
        if ((string)select.Content == "Alles selecteren")
        {
            foreach(Vraag vraag in vragenLijst)
            {
                vraag.getChecked = true;

            }
            select.Content = "Alles deselecteren";
        }
        else
        {
            foreach (Vraag vraag in vragenLijst)
            {
                    vraag.getChecked = false;
            }
            select.Content = "Alles selecteren";
        }
    }

And these are the 2 classes I'm using.

    public class Vraag 
{
    public List<string> antwoorden { get; set; }
    public string vraag { get; set; }
    public Boolean getChecked { get; set; }
}





 public class VragenList : ObservableCollection<Vraag>
{
    public VragenList(List<Vraag> vragen) :base()
    {
        foreach (var vraag in vragen)
        {
            Add(vraag);
        }
    }
}




Aucun commentaire:

Enregistrer un commentaire