【发布时间】:2011-12-06 09:19:10
【问题描述】:
我在多个字段之间进行验证时遇到问题。例如,我有一个名为 RangeDateViewModel 的 ViewModel,它包含一个名为 DateViewModel 的类的 2 个实例——它们分别代表开始日期和结束日期。
所以我的绑定看起来像这样:
<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();
}
}
问题是它永远不会被调用,而是调用驻留在每个DateViewModel 类中的IDataErrorInfo 属性。
我猜这是因为绑定的属性不在RangeDateViewModel的同一级别,而是在子DateViewModel内部。
我认为我的需求非常基本,必须有一个简单的解决方案来解决这个问题。
我尝试使用 ValidationRules 而不是 IDataErrorInfo,但是我无法让 ViewModel 从 ValidationRules 获知当前的验证状态。
【问题讨论】:
标签: wpf validation mvvm idataerrorinfo validationrules