AVG
AVG

Reputation: 61

Add check box column in wpf datagrid dynamically

I am using WPF datagrid to display details using MVVM. Columns for this datagrid are dynamically defined at run time according to the user. It is working fine. However, I am in need to include on "checkbox" column in this datagrid dynamically along with existing fields. 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".

Could you please help me to include checkbox column in the existing datagrid column dynamically?

Upvotes: 1

Views: 3780

Answers (1)

Mayur Dhingra
Mayur Dhingra

Reputation: 1577

Define the path in Binding() consturctor as 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.

Upvotes: 1

Related Questions