>解決observableCollection的限制,以兒童財產更改
>C#中的標準ObservableCollection
僅跟踪項目的添加和刪除。 即使這些項目實現,它也不會固有地監視這些項目的INotifyPropertyChanged
增強的觀測值:解決方案
> 為了解決這個問題,我們可以創建一個自定義集合類,讓我們稱其為,它擴展了
>的功能:>
TrulyObservableCollection
ObservableCollection
>此改進的類可確保添加項目時,它會訂閱其
<code class="language-csharp">public sealed class TrulyObservableCollection<T> : ObservableCollection<T> where T : INotifyPropertyChanged { public TrulyObservableCollection() : base() { } protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e) { if (e.Action == NotifyCollectionChangedAction.Add) { foreach (T item in e.NewItems) { item.PropertyChanged += ItemPropertyChanged; } } else if (e.Action == NotifyCollectionChangedAction.Remove) { foreach (T item in e.OldItems) { item.PropertyChanged -= ItemPropertyChanged; } } base.OnCollectionChanged(e); } private void ItemPropertyChanged(object sender, PropertyChangedEventArgs e) { OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, sender, sender, IndexOf((T)sender))); } }</code>方法會在集合中觸發a
操作,從而有效地通知了變更的綁定UI元素。 刪除項目正確取消訂閱的事件以防止內存洩漏。 PropertyChanged
>
ItemPropertyChanged
使用Replace
>確保對項目本身和它們的屬性的更改反映在您的數據綁定中,從而產生更敏感和準確的UI。
以上是為什麼觀察到兒童財產的變化不檢測?的詳細內容。更多資訊請關注PHP中文網其他相關文章!