格式异常:未找到字符串作为有效日期时间

时间:2013-09-24 06:13:49

标签: wpf mvvm

我正在使用mvvm ...来验证dateofbirth字段,它是组合框控件,我已将Dob属性设置为string.bt它显示错误..使用此dateofbirth正在计算年龄..无论如何要制作Dob datepicker作为必填字段,如果是字符串,我们可以在idataerror信息中检查它是否为空,如果是datetime我们不能,那么是另一种方法使它成为必需字段??? ..帮帮我

属性设置如下

public string Dob
        {
            get
            {
                return employee.Dob;
            }
            set
            {
                employee.Dob = value;
                OnPropertyChanged("Dob");
                OnPropertyChanged("Age");
            }
        }
        public int Age
        {
            get
            {
                    return employee.Age = DateTime.Today.Year - (Convert.ToDateTime(Dob)).Year;
            }
            set
            {
                employee.Age = value;
                OnPropertyChanged("Age");
            }

        } 

在(Convert.ToDateTime(Dob))显示错误,如

字符串未被识别为有效日期时间!开始运行应用程序时格式异常,它立即显示错误..请给我一个解决方案

2 个答案:

答案 0 :(得分:0)

你有什么理由将Dob用作字符串类型吗?如果没有,你可以使用这个

public DateTime Dob
{
    get
    {
        return employee.Dob;
    }
    set
    {
        employee.Dob = value;
        OnPropertyChanged("Dob");
        OnPropertyChanged("Age");
    }
}

答案 1 :(得分:0)

问题可能是DateTime格式。在转换和分配这些DateTime属性时尝试使用显式格式。

但是,为什么不对员工班级的年龄进行计算呢?像这样:

public int Age
{
    get { return DateTime.Today.Year - Dob.Year; }
    set 
    { 
        int years = value - Age;
        Dob.AddYears(years);
    }
}

作为类型,您使用可空的DateTime?,因此您仍然可以检查它是否为空,如果不是,则将其强制转换为:

if (Dob != null)
{
    DateTime dob = (DateTime)Dob;
    //etc...
}