动态添加wpf数据网格中的复选框列

本文关键字:复选框 网格 数据网 添加 wpf 数据 动态 | 更新日期: 2023-09-27 18:19:15

我使用WPF数据网格使用MVVM显示详细信息。这个数据网格的列是在运行时根据用户动态定义的。它工作得很好。但是,我需要在这个数据网格中动态地包括一个"复选框"列以及现有的字段。我使用了以下代码:

foreach (var column in collection)
{
  GridColumnAdd(gridView, column);
}

private static void GridColumnAdd(DataGrid gridView, DataGridColumns columnName)
    {
        if (columnName.DisplayColumnName == "Print")
        {
            var column = new DataGridCheckBoxColumn();
            column.Header = columnName.DisplayColumnName;
            column.Binding = new Binding();
            var binding = (column.Binding as Binding);
            binding.Mode = BindingMode.TwoWay;
            if (binding != null)
            {
                IValueConverter converter = binding.Converter = new ColumnValueConverter(); // Will work here
                binding.ConverterParameter = columnName.BindingPropertyName;
            }
            gridView.Columns.Add(column);
        }
        else
        {
            var column = new DataGridTextColumn();
            column.IsReadOnly = true;
            column.Header = columnName.DisplayColumnName;
            column.Binding = new Binding();
            var binding = (column.Binding as Binding);
            if (binding != null)
            {
                IValueConverter converter = binding.Converter = new ColumnValueConverter(); // Will work here
                binding.ConverterParameter = columnName.BindingPropertyName;
            }
            gridView.Columns.Add(column);
        }
    }

当运行这个时,我得到以下异常"双向绑定需要路径或XPath"。

你能帮我在现有的datagrid列中动态包含checkbox列吗?

动态添加wpf数据网格中的复选框列

Binding()构造函数中定义路径为Binding("IsChecked")

参考这个链接,你会得到一些帮助。如果你还不知道怎么做。