問題陳述
設想一個 ObservableCollection,其中元素實作 INotifyPropertyChanged,並且集合本身會監控這些元素的任何變更。儘管存在 ObservableCollection
解
ObservableCollectionEx 類別
建議的解決方案引入了 ObservableCollectionEx
用法
ObservableCollectionEx
<code class="language-csharp">ObservableCollectionEx<Element> collection = new ObservableCollectionEx<Element>(); ((INotifyPropertyChanged)collection).PropertyChanged += (x, y) => ReactToChange();</code>
注意事項
雖然此實作會在元素屬性變更時觸發集合的 PropertyChanged 事件,但這可能會造成混淆。因此,可以引入一個專門用於此類變更的附加事件。
此外,BCL 中的 ObservableCollection
<code class="language-csharp">((INotifyPropertyChanged)collection).PropertyChanged += (x, y) => ReactToChange();</code>
要注意的是,取消訂閱 PropertyChanged 需要將事件處理程序設定為 null:
<code class="language-csharp">collection.PropertyChanged -= (s, e) => { Trace.WriteLine("Changed " + e.PropertyName); };</code>
以上是如何建立一個 ObservableCollection 來監視其元素屬性的變化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!