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 の Merge 関数を使用して) 誤って集計したようです。ただし、ループ内のサブスクライブは完全に機能します。
多くのイベント ストリームをリアクティブな拡張機能を使用して 1 つに集約する方法を教えてください。
ありがとう