我对多个字段之间的验证有疑问。例如,我有一个名为 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 知道当前的验证状态。