C# 根据列数据类型更改DataGrid的单元格值
我正在使用WPFC# 根据列数据类型更改DataGrid的单元格值,c#,.net,wpf,datagrid,C#,.net,Wpf,Datagrid,我正在使用WPFDataGrid来显示DataTable。 我正在使用AutoGenerateColumns=True自动生成列,因为DataTable是动态设置的 如果某个列属于特定数据类型,我需要更改该列的单元格值。 例如,如果列数据类型为DateTime,则需要在其位置显示一些字符串 我查过了。如何将这样的转换器附加到动态生成的DataGrid列?使用事件自动生成列并将转换器附加到列的绑定 事件 private void DataGrid_AutoGeneratingColumn(
DataGrid
来显示DataTable
。
我正在使用AutoGenerateColumns=True
自动生成列,因为DataTable
是动态设置的
如果某个列属于特定数据类型,我需要更改该列的单元格值。
例如,如果列数据类型为DateTime
,则需要在其位置显示一些字符串
我查过了。如何将这样的转换器附加到动态生成的DataGrid列?使用事件自动生成列
并将转换器附加到列的绑定
事件
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 This”作为其文本然后我需要在其位置显示一些字符串,例如格式化日期?或者像“我被替换了”这样的字符串@Jim,我以DateTime和string数据类型为例,它可以是任何东西,我只需要在动态生成(自动生成)的列上附加值转换器。