如何通过单击DatagridCheckBox列的CheckBox列标题选择所有复选框?

时间:2014-07-23 08:22:16

标签: c# wpf xaml datagrid

我有一个带有一个复选框列的数据网格。如果有人单击列标题中的复选框,则应检查该特定列中存在的所有复选框。如何使用XAML实现?

的Xaml:

<DataGrid AlternationCount="2" AutoGenerateColumns="False" ItemsSource="{Binding}"  Height="325" HorizontalAlignment="Left" Margin="0,178,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="733" >
            <DataGrid.Columns>                
                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.Header>
                        <CheckBox Name="colCheckBox" Content="Select All" Width="70" Checked="colCheck_Checked" />
                    </DataGridTemplateColumn.Header>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>                            
                                <CheckBox Name="rowCheckBox"  HorizontalAlignment="Center"/>                           
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTextColumn Header="ProjectId" Binding="{Binding ProjectId}" Width="200"/>
                <DataGridTextColumn Header="BaselineStartDate" Binding="{Binding BaselineStartDate}" Width="200"/>
                <DataGridTextColumn Header="BaselineEndDate" Binding="{Binding BaselineEndDate}" Width="200"/>
            </DataGrid.Columns>
        </DataGrid>

1 个答案:

答案 0 :(得分:1)

您是否只能将IsCheckedCheckBox的{​​{1}}属性直接绑定到行中Header es的IsChecked属性?这应该可以解决问题:

CheckBox

当然,这也允许用户从任何行中取消选中所有<DataGridTemplateColumn> <DataGridTemplateColumn.Header> <CheckBox Name="colCheckBox" Content="Select All" Width="70" /> </DataGridTemplateColumn.Header> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <CheckBox Name="rowCheckBox" IsChecked="{Binding IsChecked, ElementName=colCheckBox}" HorizontalAlignment="Center"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> es,您可能不希望这样。或者,如果项目类中有Checkbox属性,则可以使用数据绑定:

bool

然后更新视图模型中的<DataGridTemplateColumn> <DataGridTemplateColumn.Header> <CheckBox IsChecked="{Binding MasterIsChecked}" Content="Select All" /> </DataGridTemplateColumn.Header> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <CheckBox IsChecked="{Binding IsChecked}" HorizontalAlignment="Center"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> 属性(或后面的代码)中的项目:

MasterIsChecked