C# 显示日期字段为空的列表视图
您好,我有一个带有几个字段的列表视图,其中一个是名为DatumNabavke的日期字段C# 显示日期字段为空的列表视图,c#,wpf,visual-studio-2010,listview,C#,Wpf,Visual Studio 2010,Listview,您好,我有一个带有几个字段的列表视图,其中一个是名为DatumNabavke的日期字段 public DateTime? DatumNabavke { get { return _datumNabavke; } set { _datumNabavke = value; OnPropertyChanged("DatumNabavke"); } } 如您所见,它是一个可为空的日期字段。问题是,虽然它可以为Null,但当它为Null时,它会自动使用D
public DateTime? DatumNabavke
{
get { return _datumNabavke; }
set { _datumNabavke = value; OnPropertyChanged("DatumNabavke"); }
}
如您所见,它是一个可为空的日期字段。问题是,虽然它可以为Null,但当它为Null时,它会自动使用DateTimeNow保存
if (adress.DatumNabavke == null)
{
oleComd.Parameters[":datumnabavke"].Value = DateTime.Now;
}
因此,当我创建一个新行并将DatumNabavke字段留空时,它应该在GridView的ListView中显示为今天的日期
<GridViewColumn Header="Datum Nabavke" DisplayMemberBinding="{Binding DatumNabavke, StringFormat= d}" />
但出于某种原因,这并没有发生。我显示的其他每一行,名称、id、值,都按预期显示,但由于某些原因,日期只是空的
另一件事,在调试输出中,我得到以下错误:
System.Windows.Data错误:11:回退值“x:Static sys:DateTime.Now”(类型“String”)无法转换为在“SelectedDate”(类型“Nullable1”)中使用。BindingExpression:Path=address.DatumZaduzenja;DataItem=null;目标元素是“DatePicker”(Name='datumZaduzenja');目标属性为“SelectedDate”(类型为“Nullable
1”)FormatException:“System.FormatException:x:Static sys:DateTime.Now不是DateTime的有效值。-->System.FormatException:字符串未被识别为有效的日期时间。有一个从索引0开始的未知单词。
位于System.DateTimeParse.Parse(字符串s、DateTimeFormatInfo dtfi、DateTimeStyles样式)
位于System.ComponentModel.DateTimeConverter.ConvertFrom(ITypeDescriptorContext上下文、CultureInfo区域性、对象值)
---内部异常堆栈跟踪的结束---
位于System.ComponentModel.DateTimeConverter.ConvertFrom(ITypeDescriptorContext上下文、CultureInfo区域性、对象值)
位于System.ComponentModel.NullableConverter.ConvertFrom(ITypeDescriptorContext上下文、CultureInfo区域性、对象值)
位于System.Windows.Data.BindingExpressionBase.ConvertValue(对象值、DependencyProperty dp、异常和e)'
如果你们能帮忙,我将不胜感激。您是否尝试过用其他属性指定格式,例如
<GridViewColumn Header="Datum Nabavke" DisplayMemberBinding="{Binding DatumNabavke}" StringFormat="{}{0:dd/MM/yyyy}" />
我假设DatumNabavke是ViewModel中的一个属性,并且该ViewModel的一个集合已成功绑定到ListView.ItemsSource。 您是否尝试过:
public DateTime? DatumNabavke
{
get {
if( _datumNabavke == null)
return DateTime.Now;
return _datumNabavke;
}
set { _datumNabavke = value; OnPropertyChanged("DatumNabavke"); }
}
您没有指定调用代码段的位置
if(address.DatumNabavke==null)
{
参数[“:datumnabavke”].Value=DateTime.Now;
}
如果在ViewModel集合作为ItemSource加载后发生这种情况,则绑定将永远无法工作,因为这段代码不会引发属性通知。
您也可以尝试以下方法:
if (adress.DatumNabavke == null)
{
oleComd.Parameters[":datumnabavke"].Value = DateTime.Now;
OnPropertyChanged("DatumNabavke");
}