Dav*_*eto 2 .net c# wpf datagrid
我们有很多DataGrid动态数据绑定,所以我们总是使用AutoGenerateColumns=True.对于bool列生成一个DataGridCheckBoxColumn但是可以为空的bool(bool?在C#中)生成默认值DataGridTextColumn.有没有办法强制DataGrid自动生成一个DataGridCheckBoxColumn可空的bool?不喜欢依赖于实现的黑客攻击.例如,在AutoGeneratingColumn事件中也接受一些代码隐藏.
您应该注册到AutoGeneratingColumn事件并根据列类型更改生成的列,如下所示:
private void dataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyType == typeof(bool?))
{
DataGridCheckBoxColumn checkBoxColumn=new DataGridCheckBoxColumn();
checkBoxColumn.Header = e.Column.Header;
checkBoxColumn.Binding = new Binding(e.PropertyName);
checkBoxColumn.IsThreeState = true;
// Replace the auto-generated column with the checkBoxColumn.
e.Column = checkBoxColumn;
}
}
Run Code Online (Sandbox Code Playgroud)