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