2013-08-23 3 views
0

Я использую WPF DataGrid для отображения DataTable. Я использую AutoGenerateColumns = True для автоматического создания столбцов, так как DataTable задается динамически.Изменить значение ячейки DataGrid на основе типа данных столбца

Мне нужно изменить значение (я) ячейки, если оно относится к определенному типу данных. Например, если тип данных столбца равен DateTime, тогда мне нужно отобразить на его месте string.

Я проверил IValueConverter. Как я могу привязать такой конвертер к столбцам DataGrid, которые генерируются динамически?

+0

_then мне нужно отобразить некоторую строку на своем месте_ Строку, такую ​​как форматированная дата? Или строка типа «Я заменена»? – Shoe

+0

@Jim, я взял пример DateTime и тип данных строки, это может быть что угодно, мне просто нужно прикрепить преобразователи Value в столбцах, которые будут генерироваться динамически (автоматически сгенерированы). – Brij

ответ

1

Используйте событие AutoGeneratingColumn и прикрепите конвертер к привязке колонки.

Событие

private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) 
    { 
     if (e.PropertyType.Equals(typeof(DateTime))) 
     { 
      var column = (DataGridTextColumn)e.Column; 
      var dateTimeConverter = new DateTimeConverter(); 
      ((Binding)column.Binding).Converter = dateTimeConverter; 
     } 
    } 

Преобразователь

public class DateTimeConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return "Override This"; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

Результаты в любой колонке, которая связана с DateTime свойством, чтобы отобразить "Override Это" в тексте

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