我正在使用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))显示错误,如
字符串未被识别为有效日期时间!开始运行应用程序时格式异常,它立即显示错误..请给我一个解决方案
答案 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...
}