私はINotifyPropertyChangedオブジェクトのコレクションを持っており、すべてのPropertyChangedイベントを単一の観測可能なシーケンスにストリームして処理します。ここでコレクションから1つのIObservableにPropertyChangedイベントを集約します。<EventPattern <PropertyChangedEventArgs >>
はコード
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のマージ機能を使用して集計したように見えます。しかし、ループ内で購読することは完全に機能します。
多くのイベントストリームをリアクティブエクステンションを持つものに集約する方法は誰でも助けてくれますか?
おかげ
ニース、シンプル、クリーン、作品。どうもありがとう – user1153896