DataGridCheckBoxColumn

DataGridCheckBoxColumn

我们有很多具有动态数据绑定的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/

10-13 03:15