none
Checkbox dentro do listbox -WPF RRS feed

  • Pergunta

  • Senhores,

    Preciso colocar todos os CheckBox que estão dentro de um ListBox com IsChecked = true.

    O trecho abaixo dá erro.  O que devo fazer?

    foreach (var item in lst.Items)
    {
       CheckBox chk = ((CheckBox)item);
       chk.IsChecked = chkTodos.IsChecked;
    }   


    Additional information: Não é possível converter um objeto do tipo 'System.Data.DataRowView' no tipo 'System.Windows.Controls.CheckBox'.

    Desde já, obrigado.


    Perrot

    terça-feira, 9 de junho de 2015 15:13

Respostas

  • Senhores,

    Consegui resolver o problema.  Segue abaixo:

    No XAML:

    <DataTemplate>
    
        <CheckBox Content="{Binding Nome}" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" />
    
    </DataTemplate>

    No evento click externo:

    if (chkTodos.IsChecked.Equals(true))
    {
       lst.SelectAll();
    }
    else
    {
       lst.UnselectAll();
    }

    Simples assim.

    Link de onde consegui a ajuda: http://stackoverflow.com/questions/6525920/how-to-get-selected-items-from-listbox-has-checkboxes-in-wpf

    Vlw.


    Perrot

    • Marcado como Resposta Perrot terça-feira, 9 de junho de 2015 17:31
    terça-feira, 9 de junho de 2015 17:31

Todas as Respostas

  • Esse listBox você popula manualmente ou via Binding?
    terça-feira, 9 de junho de 2015 16:42
  • Via binding.

    Perrot

    terça-feira, 9 de junho de 2015 17:26
  • Senhores,

    Consegui resolver o problema.  Segue abaixo:

    No XAML:

    <DataTemplate>
    
        <CheckBox Content="{Binding Nome}" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" />
    
    </DataTemplate>

    No evento click externo:

    if (chkTodos.IsChecked.Equals(true))
    {
       lst.SelectAll();
    }
    else
    {
       lst.UnselectAll();
    }

    Simples assim.

    Link de onde consegui a ajuda: http://stackoverflow.com/questions/6525920/how-to-get-selected-items-from-listbox-has-checkboxes-in-wpf

    Vlw.


    Perrot

    • Marcado como Resposta Perrot terça-feira, 9 de junho de 2015 17:31
    terça-feira, 9 de junho de 2015 17:31
  • Faz o seguinte, cria uma propriedade booleana "IsChecked" (Ou o nome que fique bom para você) no objeto que está na coleção que você esta usando no binding do ItemSource do ListBox.

    Depois de fazer isso, você pode "bindar" a propriedade IsChecked do Checkbox com essa propriedade que você acabou de criar nos objetos da coleção, depois é só iterar sobre a coleção setando a propriedade criada para false.

    OBS: Não esqueça de criar o binding como TwoWay e implementar a interface INotifyPropertyChanged no teu objeto para que ele consiga notificar a tela quando a propriedade for alterada.

    Qualquer dúvida só perguntar.

    Abraço!



    terça-feira, 9 de junho de 2015 17:31
  • Valeu, Bruno.

    Resolvido o problema.

    Obrigado.

     

    Perrot

    terça-feira, 9 de junho de 2015 18:37