0

我正在使用 WPFDataGrid来显示DataTable. 我正在使用动态设置AutoGenerateColumns = True 自动生成列DataTable

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

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

4

1 回答 1

3

使用该事件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属性的任何列显示“覆盖此”作为其文本

于 2013-08-23T15:27:58.630 回答