我不喜欢使用 DataGridCheckBoxColumn 因为它需要获得焦点才能与复选框交互。因此,我将一个复选框放在模板列中,您只需单击一下即可更改状态。
<dg:DataGridTemplateColumn Width="SizeToHeader">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="2,0,2,0" />
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
但是,如果您确实希望复选框在单击单元格中的任意位置(而不仅仅是复选框上)时更改状态,您可以使用以下代码,这使得 CheckBox 控件占据单元格的整个大小。
<dg:DataGridTemplateColumn Width="SizeToHeader">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="2,0,2,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
UPDATE我已经有一段时间没有进行 WPF 开发了。现在,我在使用此解决方案时遇到了问题,因为 DataGrid 已融入 WPF 库中,并且您不再需要该工具包。该复选框不想像以前编写的那样更新支持属性,因此我添加了一个更完整的绑定语句,该语句似乎确实有效。