1

我无法让 IDataErrorInfo 验证设置了 [Required] 属性(或 [ReferenceKey])并且包含 null 作为初始值的引用属性。我正在使用 WPF + EF 4.1。验证是通过数据注释和 IDataErrorInfo 完成的。对于每个属性,一切正常,除了不能包含 null 的引用属性。此属性是此属性包含 null 作为默认值,我无法将其设置为任何其他值。

这实际上意味着 this[string propertyName] 永远不会为引用属性执行,因此 UI 不会捕获任何验证错误。我继承了 [Required] 属性只是为了查看此属性是否正在被验证,它返回它是无效的,因为它应该,但 IDataErrorInfo 完全不知道这一点。

UI 中的引用属性实现示例

<ComboBox DisplayMemberPath="Name"
          ItemsSource="{Binding UnitList}"
          SelectedValue="{Binding CurrentItem.UnitId, Mode=TwoWay, ValidatesOnExceptions=True, ValidatesOnDataErrors=True, NotifyOnValidationError=True}"
          SelectedValuePath="Id" />

我能做些什么来克服这个问题?

4

1 回答 1

0

我发现的解决方法是使用 SelectedItem 而不是 SelectedValue。

于 2012-09-20T20:07:26.903 回答