/// <summary> /// Observe collection element's PropertyChanged event. /// </summary> /// <typeparam name="TCollection">Type of collection</typeparam> /// <typeparam name="TElement">Type of element</typeparam> /// <param name="source">The source.</param> /// <returns>PropertyChanged event stream.</returns> /// <exception cref="System.ArgumentNullException">source</exception> public static IObservable <SenderEventArgsPair <TElement, PropertyChangedEventArgs> > ObserveElementPropertyChanged <TCollection, TElement>(TCollection source) where TCollection : INotifyCollectionChanged, IEnumerable <TElement> where TElement : class, INotifyPropertyChanged { if (source == null) { throw new ArgumentNullException(nameof(source)); } return(ObserveElementCore <TCollection, TElement, SenderEventArgsPair <TElement, PropertyChangedEventArgs> > ( source, (x, observer) => x.PropertyChangedAsObservable().Subscribe(y => { var pair = SenderEventArgsPair.Create(x, y); observer.OnNext(pair); }) )); }
/// <summary> /// 内容に変更が発生した /// </summary> /// <param name="pair"></param> private void Changed(SenderEventArgsPair <People, PropertyChangedEventArgs> pair) { MessageBox.Show("Changed"); }