我们有很多具有动态数据绑定的DataGrid
,因此我们始终使用AutoGenerateColumns=True
。对于bool
列会生成DataGridCheckBoxColumn
,但对于可为null的布尔值(在C#中为bool?
)会生成默认的DataGridTextColumn
。有什么方法可以强制DataGrid
为可空布尔自动生成DataGridCheckBoxColumn
吗?不要选择不依赖于实现的黑客。例如,在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;
}
}
关于c# - WPF DataGrid在为可为空的 bool 值的AutoGenerateColumns时强制绑定(bind)DataGridCheckBoxColumn,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15906339/