4
4

1 回答 1

4

我想我可以冒险回答,这个问题已经一岁了。

Binding 将注册到ErrorsChanged包含该属性的 Class 中的事件。在这种情况下,地址必须实现INotifyDataErrorChanged

ErrorsChanged而且,当您实现验证逻辑时,您可以引发事件。验证 Address.Country 后,存储 ValidationResults(或简单字符串列表)并引发事件。Binding 将通过调用GetErrors(string propertyName)您自己编写的实现 INotifyDataErrorInfo 接口的方法来获取他绑定到的 PropertyName 的存储的 ValidationResults 列表。

如果此列表不为空,则 Binding 会将 Property 设置Validation.HasError为 True,并且控件将引发Validation.Error事件。某些控件具有在错误情况下更改其外观的内置行为(TextBox 的边框周围会有一个红框)。如果要显示错误,则必须通过在 xaml 中编写样式来检索它们。那里有很多例子。

HasErrors如果您想知道 Person 在其属性中是否有任何错误,则使用该方法。它主要用于这种情况:启用或禁用保存按钮。再一次,由您使用HasErrors属性来实现逻辑。它主要是通过将其绑定到 xaml 中的控件属性来完成的。

于 2016-06-05T00:15:53.467 回答