Reputation: 61
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
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