如何在带有StringFormat的DataGridTextColumn中允许空值

时间:2013-07-23 16:10:23

标签: wpf wpfdatagrid string-formatting datagridtextcolumn

DataGrid我有一栏:

<DataGridTextColumn Header="Freeze First Day" Binding="{Binding FirstDay, StringFormat=\{0:d\}}"/>

我希望能够将字段从填充更改为空白。 (FirstDay的类型为DateTime。)但是,当我离开编辑“无法转换”值时,我收到错误。我已经尝试了很多方法来解决这个问题,但我没有看到找到有效的方法。

2 个答案:

答案 0 :(得分:0)

考虑检查绑定属性是否为可为空的DateTime。

private DateTime? firstDay;
public DateTime? FirstDay
{
get
{ 
   return firstDay;
}
set
{
   firstDay=value;
}
}

答案 1 :(得分:0)

现在,我想 - 我为你的问题扎根了 这是因为您设置的StringFormat而发生的。每当您删除内容时,该值将变为null。 StringFormat无法处理NULL值,因此会抛出异常。

作为一种解决方法,您可以使用Converter,在那里您可以使用ToString()方法转换对象,如果不是NULL则返回

//IN THE CONVERTER - YOU CAN RETURN AS,
{
     return (value!=null?value.ToString("{0:d}"):value);
}