【发布时间】:2011-12-02 16:19:49
【问题描述】:
我有一个代表一些业务对象的类,例如:
Public Class MyObject
Inherits SomeBaseObject ' Implements INotifyPropertyChanged and IDataErrorInfo
Private mMyVariable as Integer
Public Property MyVariable as Integer
Get
Return mMyVariable
End Get
Set(ByVal value as Integer)
mMyVariable = value
OnPropertyChanged("MyVariable")
Validate()
End Set
End Property
Private Sub Validate()
' Validate fields and set IDataInfoError errors as needed.
End Sub
End Class
SomeBaseObject 实现了 INotifyPropertyChanged 和 IDataErrorInfo,这样 Validate 方法将在设置属性值时填充相应的 IDataErrorInfo 字段。
我还有一个支持更改事件的集合,我最终将其绑定到 WPF DataGrid。
Public Class MyCollection
Inherits ObservableCollection(Of MyObject)
End Class
第 1 部分:假设我有一个业务规则,即我的集合中没有两个项目可能具有相同的 MyVariable 值。当集合中任何项目的属性值发生变化时,如何设置我的事件(或在某处实现其他接口)以执行此跨项目验证?
第 2 部分:假设我有一个整数列表,这样每当我将新的 MyObject 项目添加到 MyCollection 的实例或更改任何项目的 MyVariable 属性时集合,MyVariable 属性的值必须存在于这个整数列表中?
【问题讨论】:
标签: .net vb.net validation collections