Usuário com melhor resposta
Checkbox dentro do listbox -WPF

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
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
Todas as 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
-
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!
- Editado Bruno Maschio Joaquim terça-feira, 9 de junho de 2015 17:32
-