Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据列数据类型更改DataGrid的单元格值_C#_.net_Wpf_Datagrid - Fatal编程技术网

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

C# 根据列数据类型更改DataGrid的单元格值,c#,.net,wpf,datagrid,C#,.net,Wpf,Datagrid,我正在使用WPFDataGrid来显示DataTable。 我正在使用AutoGenerateColumns=True自动生成列,因为DataTable是动态设置的 如果某个列属于特定数据类型,我需要更改该列的单元格值。 例如,如果列数据类型为DateTime,则需要在其位置显示一些字符串 我查过了。如何将这样的转换器附加到动态生成的DataGrid列?使用事件自动生成列并将转换器附加到列的绑定 事件 private void DataGrid_AutoGeneratingColumn(

我正在使用WPF
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数据类型为例,它可以是任何东西,我只需要在动态生成(自动生成)的列上附加值转换器。