public static IDisposable ListenPropertyChanged <T>( this INotifyPropertyChanged source, Expression <Func <T> > propertyExpression, Action <PropertyChangedEventArgs> handler) { var propName = ExtractPropertyName(propertyExpression); if (propName == null) { throw new ArgumentException("Unknown property name."); } return(source.ListenPropertyChanged(e => { if (e.PropertyName == propName) { handler(e); } })); }