您好我有一个包含几个字段的列表视图,其中一个是名为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)'
如果你们中的任何人可以提供帮助,我将非常感激。
答案 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");
}