我对多个字段之间的验证有疑问。例如,我有一个名为 ViewModel 的视图模型RangeDateViewModel
,其中包含一个名为的类的 2 个实例DateViewModel
——它们分别代表开始日期和结束日期。
所以我的绑定看起来像这样:
<TextBox Text="{Binding StartDate.Date, ValidateOnDataError=True}">
<TextBox Text="{Binding EndDate.Date, ValidateOnDataError=True}">
我的RangeDateViewModel
类实现了IDataErrorInfo
接口。在我的计划中,将通过在函数RangeDateViewModel
中应用验证逻辑来验证开始日期是否早于结束日期:IDataErrorInfo["propertyName"]
public string this[string columnName]
{
get
{
return ValidationError();
}
}
问题是它永远不会被调用,而是调用IDataErrorInfo
驻留在每个类中的属性DateViewModel
。
我猜这是因为绑定属性不在同一级别RangeDateViewModel
,而是在 child 内部DateViewModel
。
我认为我的需求是非常基本的,必须有一个简单的解决方案来解决这个问题。
我尝试使用 ValidationRules 而不是,IDataErrorInfo
但后来我无法让 ViewModel 从 ValidationRules 知道当前的验证状态。