none
CheckBox em coluna numa datagrid - como seleccionar todas RRS feed

  • Pergunta

  • Olá... 

    Tenho uma datagrid, que tem checkbox uma coluna... eu gostaria de colocar um evento num botão que ao clicar nele, todas as checkbox, dessa coluna na grid, ficassem checkadas!!

    código XAML

     

       <DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" Height="200" HorizontalAlignment="Left" ItemsSource="{Binding}" Margin="22,61,0,0" Name="aP_FamilyDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" Width="400">

                <DataGrid.Columns>

                    <DataGridTemplateColumn Header="" Width="20" >

                        <DataGridTemplateColumn.CellTemplate>

                            <DataTemplate>

                                <CheckBox Name="SelCkB" Checked="SelCkB_Checked" Unchecked="SelCkB_Unchecked" HorizontalAlignment="Center" VerticalAlignment="Center" />

                            </DataTemplate>

                        </DataGridTemplateColumn.CellTemplate>

                    </DataGridTemplateColumn>

                    <DataGridTextColumn x:Name="idFamilyColumn" Binding="{Binding Path=idFamily}" Header="id Family" Width="SizeToHeader" />

                    <DataGridTextColumn x:Name="familyColumn" Binding="{Binding Path=Family}" Header="Family" Width="SizeToHeader" />

                    <DataGridTextColumn x:Name="refColumn" Binding="{Binding Path=Ref}" Header="Ref" Width="SizeToHeader" />

                    <DataGridTextColumn x:Name="idRouleColumn" Binding="{Binding Path=idRoule}" Header="id Roule" Width="SizeToHeader" />

                </DataGrid.Columns>

            </DataGrid>

    sexta-feira, 20 de janeiro de 2012 17:23

Todas as Respostas

  • Se esta grid está ligada a uma lista de ViewModels, basta criar uma propriedade no ViewModel, fazer o binding e depois fazer o código para setar  a propriedade em todos os itens da lista:

    <DataGridTemplateColumn Header="" Width="20" >
      <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
          <CheckBox IsChecked="{Binding Selecionado}" HorizontalAlignment="Center" VerticalAlignment="Center" />
        </DataTemplate>
      </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>

    foreach (var item in listaItens)
      item.Selecionado = true;

    Bruno


    MVP Client Development - http://msmvps.com/blogs/bsonnino Twitter @bsonnino
    sábado, 21 de janeiro de 2012 13:59
  • Boa noite Tiago,

    Para adicionar o checkbox no cabeçalho do grid faça da seguinte forma, esse é um exemplo que tenho um checkbox no cabeçalho da primeira coluna um checkbox que está vinculado a uma propriedade booleana CheckAll que ao ser marcado, marca todos os itens do DataGrid:


                                <DataGridTemplateColumn >
                                    <DataGridTemplateColumn.HeaderTemplate>
                                        <DataTemplate >
                                            <CheckBox
                                                      IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Window}, Path=DataContext.CheckAll}"  />
                                        </DataTemplate>
                                    </DataGridTemplateColumn.HeaderTemplate>
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate >
                                            <CheckBox HorizontalAlignment="Center"  IsChecked="{Binding Importar, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}"
                                                      Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Window}, Path=DataContext.CheckPagamento}">                                           
                                            </CheckBox>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                    </DataGridTemplateColumn>


    Atenciosamente, Paulo R. Pereira de Souza
    http://paulosouza.net
    E-mail: paulorpereirasouza@hotmail.com. twitter facebook linkedin
    domingo, 29 de janeiro de 2012 00:47