У меня есть класс, который представляет некоторый бизнес-объект, такой как:
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
должно существовать в этом списке целых чисел?