ListView显示日期字段为空白

时间:2012-11-23 14:18:49

标签: c# wpf visual-studio-2010 listview

您好我有一个包含几个字段的列表视图,其中一个是名为DatumNabavke的日期字段。

public DateTime? DatumNabavke
    {
        get { return _datumNabavke; }
        set { _datumNabavke = value; OnPropertyChanged("DatumNabavke"); }

    }

正如您所看到的,它是一个可以为空的日期字段。问题是虽然它可以是Null,但是当它是,它会自动使用DateTimeNow

保存
if (adress.DatumNabavke == null)
                {
                    oleComd.Parameters[":datumnabavke"].Value = DateTime.Now;
                }

因此,当我创建一个新行并将DatumNabavke字段留空时,它应该在我的ListView中使用GridView显示为今天的日期

<GridViewColumn   Header="Datum Nabavke" DisplayMemberBinding="{Binding DatumNabavke, StringFormat= d}" />

但由于某种原因,这种情况不会发生。我显示的每一行,名称,ID,值,都显示为应该是,但由于某种原因,日期只是空白。

另一件事,在我的调试输出中,我收到以下错误:

System.Windows.Data错误:11:后备值'x:静态sys:DateTime.Now'(类型'String')无法转换为在'SelectedDate'中使用(输入'Nullable 1'). BindingExpression:Path=Adress.DatumZaduzenja; DataItem=null; target element is 'DatePicker' (Name='datumZaduzenja'); target property is 'SelectedDate' (type 'Nullable 1' )FormatException:'System.FormatException:x:Static sys:DateTime.Now不是DateTime的有效值。 ---&GT; System.FormatException:该字符串未被识别为有效的DateTime。从索引0开始有一个未知单词。    在System.DateTimeParse.Parse(String s,DateTimeFormatInfo dtfi,DateTimeStyles样式)    在System.ComponentModel.DateTimeConverter.ConvertFrom(ITypeDescriptorContext context,CultureInfo culture,Object value)    ---内部异常堆栈跟踪结束---    在System.ComponentModel.DateTimeConverter.ConvertFrom(ITypeDescriptorContext context,CultureInfo culture,Object value)    在System.ComponentModel.NullableConverter.ConvertFrom(ITypeDescriptorContext context,CultureInfo culture,Object value)    在System.Windows.Data.BindingExpressionBase.ConvertValue(Object value,DependencyProperty dp,Exception&amp; e)'

如果你们中的任何人可以提供帮助,我将非常感激。

2 个答案:

答案 0 :(得分:1)

您是否尝试在其他属性中指定格式,例如

<GridViewColumn Header="Datum Nabavke" DisplayMemberBinding="{Binding DatumNabavke}" StringFormat="{}{0:dd/MM/yyyy}" />

答案 1 :(得分:1)

我假设DatumNabavke是ViewModel中的一个属性,并且该ViewModel的集合已经成功绑定到ListView.ItemsSource。 你试过了吗?

public DateTime? DatumNabavke
{
    get { 
        if( _datumNabavke == null)
             return DateTime.Now;

        return _datumNabavke; 
    }
    set { _datumNabavke = value; OnPropertyChanged("DatumNabavke"); }

}

您没有指定调用代码的位置

if(adress.DatumNabavke == null)                 {                     oleComd.Parameters [“:datumnabavke”]。Value = DateTime.Now;                 }

如果在将ViewModel集合作为ItemSource加载后发生这种情况,则绑定将永远不会起作用,因为这段代码不会引发属性通知。 你也可以试试这个:

if (adress.DatumNabavke == null)
{
    oleComd.Parameters[":datumnabavke"].Value = DateTime.Now;
    OnPropertyChanged("DatumNabavke");
}