У меня есть коллекция объектов INotifyPropertyChanged, и я хотел бы передать все события PropertyChanged в одну наблюдаемую последовательность для дальнейшей обработки.
Вот код
IObservable<EventPattern<PropertyChangedEventArgs>> _allEvents = null;
// Items contains collection of item, which implements INotifyPropertyChanged
foreach (var item in Items)
{
var seq = Observable.FromEventPattern<PropertyChangedEventArgs>(item, "PropertyChanged");
if (_allEvents == null)
_allEvents = seq;
else
_allEvents.Merge(seq);
}
// subscribe to the aggregated observable sequence
if (_allEvents != null)
_allEvents.Subscribe(evt => Trace.WriteLine(" Property Changed -> " + evt.EventArgs.PropertyName));
Одиночная подписка здесь почему-то не работает в агрегированной последовательности. Похоже, я неправильно агрегировал (используя функцию слияния Reactive Extensions). Но подписка внутри цикла работает отлично.
Может ли кто-нибудь помочь мне здесь, как объединить множество потоков событий в один с реактивными расширениями?
Спасибо