2014-08-25 11 views
1

Я использую datagrid WPF для отображения деталей с использованием MVVM. Столбцы для этого datagrid динамически определяются во время выполнения в соответствии с пользователем. Он работает нормально. Тем не менее, мне нужно включить динамический столбец «checkbox» в этом дата-файле вместе с существующими полями. Я использовал следующий код.Добавить столбец столбца в wpf datagrid динамически

...

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

     } 
    } 

во время работы этого я получаю следующее исключение "Двустороннее связывание требует Path или XPath".

Не могли бы вы помочь мне включить динамический столбец столбца в существующем столбце datagrid?

+0

Почему вы не добавляете столбцы из xaml. Я имею в виду, есть ли какая-либо конкретная потребность в определении столбцов в коде за кодом C#? –

+0

Да, на основе пользователя, мы показываем столбцы в datagrid. Таким образом, флажок является одним из необходимых столбцов для некоторых пользователей. – AVG

+0

Ошибка ясно, вам нужно определить путь для определения двусторонней привязки, и я не вижу пути, определенного в вашем коде. –

ответ

1

Определить путь в Binding() consturctor как Binding("IsChecked").

Обратитесь к this и вы получите помощь. Если вы все еще не понимаете, как это сделать. Добавьте комментарий к этому ответу.

+1

Большое спасибо Маюру Дхинга. Он работает нормально. – AVG

Смежные вопросы