Коллекции - Observable 

Page / - Изменено Alexandr Fokin в 2023/02/24 21:15 

Observable 
Изменено Alexandr Fokin
в 2023/02/24 21:15

Оглавление

ObservableCollection	Выступает в роли обертки над List, предоставляет интерфейс оповещения о событиях изменения коллекции.
Важно: по умолчанию уведомляет только об изменения самой коллекции, не учитывая изменения элементов (в случае, если они реализует INotifyPropertyChanged).
В таком варианте обновление элемента подразумевает его повторную вставку.

При этом, например, привязка в фреймворке WPF умеет в том числе фиксировать изменения свойств элементов.
Возможно создание такого расширения, который также будет в нужных местах подписываться/отписываться на изменения элементов и пробрасывать их в свой интерфейс оповещения.	Демонстрация обновления элемента по индексу.	
Элемент без оповещения	var item = Collection1[index];
item.Property1 += "modified";

Collection1.RemoveAt(index);
Collection1.Add(item);	
Элемент с INotifyPropertyChanged	var item = Collection2[index];
item.Property1 += "modified";	
 	
CompositeCollection	Binding multiple ObservableCollections to One ObservableCollection
https://stackoverflow.com/questions/13203795/binding-multiple-observablecollections-to-one-observablecollection	 	
Cysharp/ObservableCollections
https://github.com/Cysharp/ObservableCollections	ObservableCollections is a high performance observable collections(ObservableList<T>, ObservableDictionary<TKey, TValue>, ObservableHashSet<T>, ObservableQueue<T>, ObservableStack<T>, ObservableRingBuffer<T>, ObservableFixedSizeRingBuffer<T>) with synchronized views.