我有一个带有一个复选框列的数据网格。如果有人单击列标题中的复选框,则应检查该特定列中存在的所有复选框。如何使用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>
答案 0 :(得分:1)
您是否只能将IsChecked
中CheckBox
的{{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