我想通知WPF中綁定系統中集合項的更改,以便每當集合中的項目發生更改時,通過IDataErrorInfo進行的驗證都會得到重新評估。 我有一個自定義列表類型實現INotifyCollectionChanged(並正常工作)。但不知何故,驗證邏輯從來沒有被調用,因爲(或者至少我假設)這個通知沒有到達正確的地方。這種情況甚至可能嗎?我錯過了什麼?IDataErrorInfo驗證的集合更新的通知
[編輯]
所以基本上 「建築」 是以下內容:
- MVVM基類實現IDataErrorInfo的並且可以用在派生MVVM類的lambda,如寄存器DataValidators:
RegisterDataValidator(() => People,() => (People.Count == 0) ? "At least one person must be specified" : null);
基類的索引器檢查註冊的驗證器並返回它返回的。
- 我有一個
SmartBindingList<T> where T: INotifyPropertyChange
這基本上是一個列表,當項目被添加到它,登記的項目PropertyChangedEvent和類本身發射的CollectionChanged事件反應這些事件:
private void OnSubPropertyChanged (object sender, PropertyChangedEventArgs e)
{
if (sender is T1)
{
if (CollectionChanged != null)
{
NotifyCollectionChangedEventArgs eventArgs = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, sender, sender);
CollectionChanged(this, eventArgs);
}
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(myPropertyName));
}
}
}
所以這一切都很好,但是當代碼在CollectionChanged(this,eventArgs)行上運行時,在驗證方面沒有任何反應。它應該正確連接,因爲當我添加一些東西到集合中,它完美的工作。我錯過了什麼?
顯示您的相關'IDataErrorInfo'代碼 – 2012-03-12 17:11:05
我有同樣的問題 – Mohsen 2012-05-15 09:08:05