简体   繁体   English

在wpf datagrid中动态添加复选框列

[英]Add check box column in wpf datagrid dynamically

I am using WPF datagrid to display details using MVVM. 我正在使用WPF数据网格来使用MVVM显示详细信息。 Columns for this datagrid are dynamically defined at run time according to the user. 此datagrid的列是根据用户在运行时动态定义的。 It is working fine. 一切正常。 However, I am in need to include on "checkbox" column in this datagrid dynamically along with existing fields. 但是,我需要与现有字段一起动态地包含在此datagrid的“复选框”列中。 I have used following code. 我使用了以下代码。

... ...

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);

        }
    }

while running this I am getting following exception "Two-way binding requires Path or XPath". 运行此程序时,我遇到以下异常“双向绑定需要路径或XPath”。

Could you please help me to include checkbox column in the existing datagrid column dynamically? 您能帮我动态地在现有datagrid列中包括复选框列吗?

Define the path in Binding() consturctor as Binding("IsChecked") . Binding()构造函数中的路径定义为Binding("IsChecked")

Refer to this link and you'll get some help. 参考链接,您将获得一些帮助。 If you still don't get how to do it. 如果您仍然不知道该怎么做。 Add a comment to this answer. 在此答案中添加评论。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM