我在WPF中使用INotifyDataError接口进行异步验证。我有一个属性
<TextBox Grid.Column="5"
Text="{Binding XXX.Name, ValidatesOnNotifyDataErrors=True}"/>
在我的视图模型中,我有一个属性
public SomeType XXX
并且类型SomeType我有属性
public string Name
现在我的ViewModel实现了INotifyPropertyChanged和INotifyDataError,并且在我的viewmodel类中异步完成了验证。 SomeType仅实现INotifyPropertyChanged。
我的问题是这样的。当我使用ErrorsChanged
引发DataErrorsChangedEventArgs(propertyName))
事件时,propertyName应该是什么。请注意我的绑定路径是XXX.Name
。应该是propertyName
或其他什么或我是否必须在我的SomeType
类中实现INotifyDataErrorInfo,我希望不必这样做,因为我希望我的验证保留在主视图模型中。
无论如何,我已经尝试了上面的两个文本框并没有得到一个红色框,虽然我可以验证错误事件是否被提出。
答案 0 :(得分:3)
afaik我会说你必须在你的SomeType类中为你的属性XXX实现IDataErrorInfo,因为你绑定它。我在我的项目中这样做并且有效。