根据列数据类型更改DataGrid的单元格值

时间:2013-08-23 10:48:54

标签: c# .net wpf datagrid

我正在使用WPF DataGrid来显示DataTable。 我正在使用AutoGenerateColumns = True自动生成列,因为DataTable是动态设置的。

如果是特定数据类型,我需要更改列的单元格值。 例如,如果Column数据类型为DateTime,那么我需要在其位置显示一些string

我查了IValueConverter。如何将这样的转换器附加到动态生成的DataGrid列?

1 个答案:

答案 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属性的列中显示“覆盖此内容”作为其文本