[英]Change WPF DataGrid cell background programatically (without using XAML)
[英]Programatically change the contents of a WPF Datagrid Cell
我有一个WPF DataGrid(.NET Framework 4),它从myObject数组获取其ItemsSource。 myObject的列/变量之一是DateTime。 有没有一种方法可以更改DataGrid行的绘制事件,以便我可以在该列的单元格中显示除每个对象的DateTime以外的其他内容?
设置AutoGenerateColumns
为False,并确定使用手动将列DataGridTextColumn
,DataGridTemplateColumn`等。
使用AutoGeneratingColumn
事件进行编辑 ,您可以通过添加IValueConverter
来修改列的输出:
void MyGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
// check if the current column is the target
if (e.PropertyName == "MyDateproperty")
{
// assuming it's a Text-type column
var column = (e.Column as DataGridTextColumn);
if (column != null)
{
var binding = column.Binding as Binding;
if (binding != null)
{
// add a converter to the binding
binding.Converter = new StringFormatConverter();
}
}
}
}
现在,以通常的方式定义StringFormatConverter
,将Date / Time值转换为:
public class StringFormatConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var col = (DateTime?)value;
return (col == null) ? null : col.Value.ToShortDateString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.