0

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

属性设置如下

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)) 处显示错误,例如

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

4

2 回答 2

0

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

public DateTime Dob
{
    get
    {
        return employee.Dob;
    }
    set
    {
        employee.Dob = value;
        OnPropertyChanged("Dob");
        OnPropertyChanged("Age");
    }
}
于 2013-09-24T06:25:32.697 回答
0

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

但是,你为什么不计算你的员工级别的年龄呢?像这样:

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

作为类型,您使用 nullable DateTime?,因此您仍然可以检查它是否为空,如果不是,则进行转换:

if (Dob != null)
{
    DateTime dob = (DateTime)Dob;
    //etc...
}
于 2013-09-24T06:48:36.237 回答