/// <summary> /// Observe collection element's property. /// </summary> /// <typeparam name="TElement">Type of element</typeparam> /// <typeparam name="TProperty">Type of property</typeparam> /// <param name="source">Data source</param> /// <param name="propertySelector">Property selection expression</param> /// <param name="isPushCurrentValueAtFirst">Push current value on first subscribe</param> /// <returns>Property sequence</returns> public static IObservable <PropertyPack <TElement, TProperty> > ObserveElementProperty <TElement, TProperty>(this IFilteredReadOnlyObservableCollection <TElement> source, Expression <Func <TElement, TProperty> > propertySelector, bool isPushCurrentValueAtFirst = true) where TElement : class, INotifyPropertyChanged => CollectionUtilities.ObserveElementProperty(source, propertySelector, isPushCurrentValueAtFirst);