DateTime显示绑定到DataGrid后的随机日期



我有一个ObservableCollection<object>,它绑定到代码隐藏中的DataGrid,我添加列并为代码隐藏中这些列生成绑定。

   private void RgvReportDisplay_Loaded( object sender, RoutedEventArgs e )
        {
            if (RgvReportDisplay.Columns.Count == 0)
            {
                foreach (var item in ((ReportsQueryHolder)DataContext).Collection[0].GetType().GetProperties())
                {
                    Binding B = null;
                    if (item.Name.ToLower().Contains("date") || item.Name.ToLower().Contains("scheduledpickup"))
                    {
                        B = new Binding(item.Name + ".Date");
                        //B.Converter = new DateConverter();
                        B.Mode = BindingMode.OneWay;
                    }
                    else
                    {
                        B = new Binding(item.Name);
                        B.Mode = BindingMode.OneWay;
                    }
                    RgvReportDisplay.Columns.Add(new Microsoft.Windows.Controls.DataGridTextColumn()
                    {
                        Header = item.Name,
                        Binding = B 
                    });      
                }
            }
        }

当我在绑定之前查看集合列表时,日期看起来是正确的。以下是我的即时窗口中的内容:

((ReportsQueryHolder)DataContext).Collection[0]
{DataTableType}
    Amount: "749.00"
    Collector: "John Smith"
    CreatedDate: {3/11/2014 8:00:39 PM}
    LocationName: "QUICK STOP "
    LocationNumber: "37"
    ScheduledPickup: {3/12/2014 12:00:00 AM}

我的约会搞砸了。现在,当它绑定到DataGrid时,我的约会对象会随机说出一些事情。显示内容如下:

     10/12/8524

因此,2014年12月3日是如何转换为8524年12月10日的。这曾经奏效,但现在不行了。

添加:

因此,我绑定了一个nullable DateTime,这就是问题的原因。为什么声明这些字段是DateTime?会导致这种情况?

我最终在日期转换器中处理了null,因为null显示为DateTime。因此,我只是检查了一下MinValue,然后返回了一个基于的字符串

最新更新