我正在使用WPF DataGrid
来显示DataTable
。
我正在使用AutoGenerateColumns = True
自动生成列,因为DataTable
是动态设置的。
如果是特定数据类型,我需要更改列的单元格值。
例如,如果Column数据类型为DateTime
,那么我需要在其位置显示一些string
。
我查了IValueConverter。如何将这样的转换器附加到动态生成的DataGrid列?
答案 0 :(得分: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
属性的列中显示“覆盖此内容”作为其文本