2013-08-23 66 views
0

我正在使用WPF DataGrid來顯示DataTable。 我使用AutoGenerateColumns = True自動生成列,因爲DataTable是動態設置的。根據列數據類型更改DataGrid的單元格值

如果它是特定數據類型,我需要更改列的單元格值。 例如,如果Column數據類型爲DateTime,那麼我需要在其位置顯示一些string

我查了IValueConverter。如何將這種轉換器附加到動態生成的DataGrid列上?

+0

_then我需要的任何列在其位置顯示一些字符串_格式化日期等字符串?或者像「我被替換」的字符串? – Shoe

+0

@Jim,我以DateTime和字符串數據類型爲例,它可以是任何東西,我只需要在將動態生成(自動生成)的列上附加值轉換器。 – 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屬性顯示 「覆蓋這個」 作爲其文本