当AutoGenerateColumns为可空的bool时,WPF DataGrid强制绑定DataGridCheckBoxColumn

Dav*_*eto 2 .net c# wpf datagrid

我们有很多DataGrid动态数据绑定,所以我们总是使用AutoGenerateColumns=True.对于bool列生成一个DataGridCheckBoxColumn但是可以为空的bool(bool?在C#中)生成默认值DataGridTextColumn.有没有办法强制DataGrid自动生成一个DataGridCheckBoxColumn可空的bool?不喜欢依赖于实现的黑客攻击.例如,在AutoGeneratingColumn事件中也接受一些代码隐藏.

use*_*519 8

您应该注册到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)