我有一個類,代表了一些業務對象,比如這個:如何驗證.NET集合的對象?
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的,這樣設置的屬性值時,驗證方法將填充適當IDataErrorInfo的領域。
我也有一個支持更改事件的集合,我最終綁定到WPF DataGrid。
Public Class MyCollection
Inherits ObservableCollection(Of MyObject)
End Class
第1部分:比方說,我有一個商業規則,它說,我的收藏中沒有兩個項目可能有MyVariable
相同的值。當集合中的任何項目的屬性值發生更改時,如何設置我的事件(或在某處實現其他接口)以執行此交叉項目驗證?
第2部分:假設我有一列整數這樣,每當我添加一個新的MyObject
項目的MyCollection
實例或改變任何項目MyVariable
物業已經在徵收時,MyVariable
屬性的值必須存在於這個整數列表中嗎?
這讓我朝着正確的方向思考。當新項目添加到集合中時,我爲每個項目綁定了一個Property_Changed事件處理程序,並且在事件處理程序中,我檢查了該對象的唯一性,並在檢查失敗時將其標記爲無效。它不會阻止用戶添加副本,但將新對象標記爲無效可防止在用戶修復問題之前保存數據。 –